PageSourceSearch

https://img.dormy-hotels.com/static/js/script.js?v=20261001103837

js dormy-hotels.com collected 2026-10-02 05:59:35 UTC 88,796 bytes, 2,536 lines download raw bytes

1const BPMax767 = window.matchMedia('(max-width:767px)');
2const BPMax1024 = window.matchMedia('(max-width:1024px)');
3const BPMin768 = window.matchMedia('(min-width:768px)');
4const BPMin1025 = window.matchMedia('(min-width:1025px)');
5
6$(function(){
7  checkTelLink();
8
9  // getDevice
10  function getDevice() {
11    var ua = navigator.userAgent.toLowerCase();
12    if ((ua.indexOf('iphone') != -1) || ua.indexOf('ipod') != -1 || (ua.indexOf("android") != -1 && ua.indexOf("mobile") != -1) || (ua.indexOf("firefox") != -1 && ua.indexOf("mobile") != -1) || (ua.indexOf("windows") != -1 && ua.indexOf("phone") != -1)) {
13      return 'sp';
14    }else if(ua.indexOf('iPad') > 0 || ua.indexOf('Android') > 0){
15      return 'tab';
16    }else{
17      return 'other';
18    }
19  }
20  
21  // checkTelLink
22  function checkTelLink() {
23    if(getDevice() == 'other') {
24      $('a[href^="tel:"]').removeAttr('href').css('text-decoration', 'none');
25    }
26  }
27
28  const allWrap = $('.allWrap');
29  const headerContainer = $('.headerContainer');
30  const footerContainer = $('.footerContainer');
31  const fixingReserveButton  = headerContainer.find('.fixingReserveButton');
32  const fixingInputArea  = headerContainer.find('.fixingInputArea');
33  const fixingInputAreaInner  = fixingInputArea.find('.inner');
34  const fixingInputAreaTabs  = fixingInputArea.find('.inputAreaTabs li');
35  const fixingBestRate = headerContainer.find('.fixingBestRate');
36  const bestRateLogo = headerContainer.find('.bestRateLogo');
37  const commonBestRateIcon01 = $('main .commonBestRateIcon01');
38  const topSubMenuButtonOpen = headerContainer.find('.gnav-open-btn');
39  const topSubMenuButtonClose = headerContainer.find('.gnav-close-btn');
40  const subMenuArea = headerContainer.find('.subMenuArea');
41  const headerOverlay = headerContainer.find('.overlay');
42
43  let bestRateKey = 'bestRateKey';
44  let bestRateValue =  window.localStorage.getItem(bestRateKey);
45
46  if(bestRateValue !== 'close'){
47    if(commonBestRateIcon01.length){
48      commonBestRateIcon01.show();
49    }
50  }
51
52  function no_scroll(){
53    document.addEventListener("mousewheel", scroll_control, { passive: false });
54    document.addEventListener("touchmove", scroll_control, { passive: false });
55  }
56  function return_scroll(){
57    document.removeEventListener("mousewheel", scroll_control, { passive: false });
58    document.removeEventListener('touchmove', scroll_control, { passive: false });
59  }
60  function scroll_control(event){event.preventDefault();}
61
62
63//smoothScroll
64  $(document).on('click', 'a.scroll', function(e) {
65    e.preventDefault();
66    const page = location.pathname;
67    const targetHref = $(this).attr('href');
68    const target = $(targetHref == '#' || targetHref == '' ? 'html' : targetHref);
69    let headerH = 0;
70    let targetCoord = target.offset().top;
71
72    if (window.matchMedia('(min-width: 768px)').matches) {
73      headerH = $('.headerContainer').innerHeight();
74    } else {
75      if($('#top').length){
76        if (subMenuArea.hasClass('open')) {
77          subMenuArea.removeClass('active'), $('html').removeClass('scroll-lock');
78          headerOverlay.stop(true,true).fadeOut(300);
79        }
80
81        if(targetHref == '#hotelList'){
82          headerH = $('.headerContainer').innerHeight() + 40;
83        } else {
84          headerH = $('.headerContainer').innerHeight() - 20;
85        }
86      } else {
87        headerH = $('.headerContainer').innerHeight();
88      }
89    }
90
91    $('html,body').animate({scrollTop:targetCoord - headerH}, 500);
92  });
93
94
95//popup
96  $('.popup').click(function(e){
97    e.preventDefault();
98    window.open(this.href,'null','scrollbars=yes,resizable=yes,width=800,height=800');
99  });
100
101
102//hover
103  $('.hover').on({
104    mouseenter: function(){
105      const onSrc = $(this).find('img').attr('src').replace('_off', '_on');
106      if($('.menuBtn').is(':hidden')){$(this).find('img').attr('src', onSrc);}
107    },
108    mouseleave: function(){
109      const offSrc = $(this).find('img').attr('src').replace('_on', '_off');
110      if($('.menuBtn').is(':hidden')){$(this).find('img').attr('src', offSrc);}
111    }
112  });
113
114
115//siteHeader scroll slideUp
116  $(window).on('load resize scroll', function(){
117    if($(window).scrollTop() >= 100){
118      headerContainer.addClass('menuAreaHidden');
119    }else{
120      headerContainer.removeClass('menuAreaHidden');
121    }
122  });
123
124
125//modalOpen
126  const commonModalTrigger = $('.modalOpen');
127  commonModalTrigger.on('click', function(e){
128    e.preventDefault();
129    const targetData = $(this).data('target');
130    const targetModal = '#' + targetData;
131
132    if(targetData === 'channelModal'){
133      const movieId = $(this).data('movieId');
134      const movieIfame = '<iframe src="https://www.youtube.com/embed/' + movieId + '" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>';
135
136      $(targetModal).find('.movieArea').html(movieIfame);
137      $(targetModal).prepend('<div class="modalCloseButton"></div>'), $(targetModal).append('<div class="modalOverlay"></div>');
138      $(targetModal).fadeIn(200), $(targetModal).addClass('open');
139    }else{
140      $(targetModal).prepend('<div class="modalCloseButton"></div>'), $(targetModal).append('<div class="modalOverlay"></div>');
141      $(targetModal).fadeIn(200), $(targetModal).addClass('open');
142    }
143
144  });
145
146  $(document).on('click', '.modalCloseButton', function(){
147    const parentModal = $(this).parent('.commonModalArea');
148    parentModal.fadeOut('200', function(){
149      parentModal.find('.modalCloseButton, .modalOverlay').remove();
150      if(parentModal.find('iframe').length){parentModal.find('iframe').remove();}
151    });
152  });
153
154  $(document).on('click', '.modalOverlay', function(){
155    const parentModal = $(this).parent('.commonModalArea');
156    parentModal.fadeOut('200', function(){
157      parentModal.find('.modalCloseButton, .modalOverlay').remove();
158      if(parentModal.find('iframe').length){parentModal.find('iframe').remove();}
159    });
160  });
161
162
163//inputModal modalOpen
164  function toggleFixingReserveButton() {
165    if (window.matchMedia('(min-width: 768px)').matches) {
166      if (!$('#hotelsDetail').length || $('#js-unnanTsuruga').length) {
167        fixingReserveButton.show();
168      }
169    } else {
170      if (!$('#hotelsDetail').length || $('#js-unnanTsuruga').length) {
171        if ($(window).scrollTop() >= 100) {
172          fixingReserveButton.fadeIn(200);
173          fixingReserveButton.addClass('buttonShow');
174        } else {
175          fixingReserveButton.fadeOut(200);
176          fixingReserveButton.removeClass('buttonShow');
177        }
178      }
179    }
180  }
181
182  const inputModal = $('.inputModal');
183  const inputNumberSelect = inputModal.find('.numberSelect');
184  const inputModalTrigger = $('.inputModalOpen');
185  inputModalTrigger.on('click', function(e){
186    e.preventDefault();
187    const targetModal = '#' + $(this).data('target');
188    const parrentWrapper = $(this).parent('.inputWrapper');
189    $(this).next('.inputModal').prepend('<div class="inputModalCloseButton"></div>')/*, $('main').addClass('inputModalMode')*/;
190    fixingReserveButton.fadeOut(200), fixingBestRate.fadeOut(200);
191    $(targetModal).fadeIn(200).css({display: 'flex'})/*, $(targetModal).addClass('open')*/;
192  });
193
194  $(document).on('click', '.inputModalCloseButton', function(){
195    const parentModal = $(this).parent('.inputModal');
196    toggleFixingReserveButton();
197    if(bestRateValue !== 'close'){
198      fixingBestRate.fadeIn(200);
199    }
200    parentModal.fadeOut('200', function(){
201      parentModal.find('.inputModalCloseButton').remove()/*, $('main').removeClass('inputModalMode')*/;
202    });
203  });
204
205  $(window).on('load resize scroll', toggleFixingReserveButton);
206
207  //datepicker
208  const datepickerHotel = $('.js-datepickerHotel');
209  const datepickerAirPort = $('.js-datepickerAirPort');
210  const cal = document.getElementsByClassName('js-wel');
211  let today;
212  let todayAir;
213  let mindayAir;
214  
215  const openDay = datepickerHotel.data('openday');
216  const defaultDay = $('#js-todyDate').val();
217  const defaultDayISO = defaultDay.replace(/\//g, '-');
218  const defaultDate = new Date(defaultDayISO);
219  
220  if (openDay) {
221    const openDayStr = String(openDay);
222    const formatted = openDayStr.replace(/(\d{4})(\d{2})(\d{2})/, '$1/$2/$3');
223    const openDateISO = openDayStr.replace(/(\d{4})(\d{2})(\d{2})/, '$1-$2-$3');
224    const openDate = new Date(openDateISO);
225  
226    if (openDate >= defaultDate) {
227      today = formatted;
228    } else {
229      today = defaultDay;
230    }
231    todayAir = defaultDay;
232    mindayAir = defaultDay;
233  } else {
234    today = defaultDay;
235    todayAir = defaultDay;
236    mindayAir = defaultDay;
237  }
238
239  const today2Months = new Date(todayAir);
240        today2Months.setMonth(today2Months.getMonth() + 2);
241
242  for(let i=0; i<cal.length; i++){
243    cal[i].value = today;
244  }
245
246  //祝日読み取り
247  const uri = new URL(window.location.href);
248  const hostname = uri.hostname;
249  let holidays = [];
250  const req = new XMLHttpRequest();
251  const clDate = new Date();
252  const clYear = clDate.getFullYear();
253  const clFilePass = "/static/csv/syukujitsu/syukujitsu_" + clYear + ".csv";
254  let clFile;
255  if(hostname == 'dormy-hotels.com'){
256    clFile = "https://img.dormy-hotels.com" +  clFilePass;
257  } else if(hostname == 'staging-www.kyoritsu-hotels.net'){
258    clFile = clFilePass;
259  } else {
260    clFile = "https://develop-img.kyoritsu-hotels.net" +  clFilePass;
261  }
262  
263  req.open("get", clFile, true);
264  req.overrideMimeType('text/plain; charset=Shift_JIS');
265  req.send(null);
266
267  req.onload = function(){
268    holidays = convertCSVtoArray(req.responseText);
269
270    $(function(){
271      datepickerHotel.datepicker({
272        altFormat: "yy/mm/dd",
273        dateFormat: "yy/mm/dd",
274        language: 'ja',
275        showButtonPanel: true,
276        minDate: today,
277        beforeShowDay: function(date){
278          // Check holidays from CSV
279          for(let i = 0; i < holidays.length; i++){
280            if(holidays[i][0] === getDayStr(date)){
281              return [true, 'isHoliday', null];
282            }
283          }
284          if(date.getDay() == 0){
285            return [true, 'isSunday', null];
286          } else if(date.getDay() == 6){
287            return [true, 'isSaturday', null];
288          }
289          return [true, ''];
290        }
291      }).datepicker("setDate", today);
292
293      datepickerAirPort.datepicker({
294        altFormat: "yy/mm/dd",
295        dateFormat: "yy/mm/dd",
296        language: 'ja',
297        showButtonPanel: true,
298        minDate: mindayAir,
299        beforeShowDay: function(date){
300          // Check holidays from CSV
301          for(let i = 0; i < holidays.length; i++){
302            if(holidays[i][0] === getDayStr(date)){
303              return [true, 'isHoliday', null];
304            }
305          }
306          if(date.getDay() == 0){
307            return [true, 'isSunday', null];
308          } else if(date.getDay() == 6){
309            return [true, 'isSaturday', null];
310          }
311          return [true, ''];
312        }
313      }).datepicker("setDate", today2Months);
314    });
315  };
316
317  req.onerror = function() {
318    alert('失敗しました');
319    window.stop();
320  };
321
322  // CSVを配列化
323  function convertCSVtoArray(str){
324    let tmp = str.split("\n");
325    tmp.shift(); // Remove header
326    let result = [];
327    let date = "";
328
329    for(let i = 0; i < tmp.length; i++){
330      if(!tmp[i]) continue;
331      result[i] = tmp[i].split(',');
332      date = new Date(result[i][0]);
333      result[i][0] = getDayStr(date);
334    }
335
336    return result;
337  }
338
339  // 日付のフォーマットに合わせる(yy/mm/dd)
340  function getDayStr(date){
341    let yy = date.getFullYear();
342    let mm = ("0" + (date.getMonth() + 1)).slice(-2);
343    let dd = ("0" + date.getDate()).slice(-2);
344    return yy + '/' + mm + '/' + dd;
345  }
346
347  /* $.get('https://holidays-jp.github.io/api/v1/date.json', function(holidaysData){
348    $(function(){
349      datepickerHotel.datepicker({
350        altFormat: "yy/mm/dd",
351        dateFormat: "yy/mm/dd",
352        language: 'ja',
353        //changeMonth: true,
354        //changeYear: true,
355        showButtonPanel: true,
356        minDate: today,
357        beforeShowDay: function(date){
358          if(date.getDay() == 0){
359            return [true, 'isSunday', null];
360          }else if(date.getDay() == 6){
361            return [true, 'isSaturday', null];
362          }
363          var holidays = Object.keys(holidaysData);
364          for(let i = 0; i < holidays.length; i++){
365            var holiday = new Date(Date.parse(holidays[i]));
366            if(holiday.getYear() == date.getYear() && holiday.getMonth() == date.getMonth() && holiday.getDate() == date.getDate()){
367              return [true, 'isHoliday', null];
368            }
369          }
370          return [true, ''];
371        }
372      }).datepicker("setDate", today);
373
374      datepickerAirPort.datepicker({
375        altFormat: "yy/mm/dd",
376        dateFormat: "yy/mm/dd",
377        language: 'ja',
378        //changeMonth: true,
379        //changeYear: true,
380        showButtonPanel: true,
381        minDate: today,
382        beforeShowDay: function(date){
383          if(date.getDay() == 0){
384            return [true, 'isSunday', null];
385          }else if(date.getDay() == 6){
386            return [true, 'isSaturday', null];
387          }
388          var holidays = Object.keys(holidaysData);
389          for(let i = 0; i < holidays.length; i++){
390            var holiday = new Date(Date.parse(holidays[i]));
391            if(holiday.getYear() == date.getYear() && holiday.getMonth() == date.getMonth() && holiday.getDate() == date.getDate()){
392              return [true, 'isHoliday', null];
393            }
394          }
395          return [true, ''];
396        }
397      }).datepicker("setDate", today2Months);
398    });
399  }); */
400
401// 検索 都道府県
402/*  var spanText = document.getElementsByClassName('js-prefecture');    
403    for(let i=0; i<spanText.length; i++){
404      spanText[i].addEventListener('click',function(){
405        var keyword = document.getElementById('keyword1');
406        var mapNumberOfAldults = document.getElementById('mapNumberOfAldults');
407        keyword.value = this.dataset.prefecture;
408
409        if(keyword.value == 'カンナム') {
410          mapNumberOfAldults.value = '2';
411        }
412
413        keyword.form.submit();
414      });
415    } */
416
417//検索 エリア
418/*  var spanText = document.getElementsByClassName('js-area');
419  for(let i=0; i<spanText.length; i++){
420    spanText[i].addEventListener('click',function(){
421      var keyword = document.getElementById('keyword2');
422      var areaNumberOfAldults = document.getElementById('areaNumberOfAldults');
423      keyword.value = this.dataset.area;
424
425      if(keyword.value == 'ドーミーインSEOUL 江南(カンナム)') {
426        areaNumberOfAldults.value = '2';
427      }
428
429      keyword.form.submit();
430    });
431  } */
432
433//inputModal input
434  const inputResetButton = inputModal.find('.inputModalButtons .reset');
435  const inputFixButton = inputModal.find('.inputModalButtons .fix');
436  const inputCloseButton = inputModal.find('.inputModalButtons .close');
437  let min, max, numberArea, number;
438
439  //number
440  //inputNumberSelect.find('.icons').on('click', function(){
441  //  if($(this).hasClass('disable')) return;
442  //  const parentWrapper = $(this).parents('.inputWrapper');
443  //  const targetName = $(this).parent().data('inputName');
444  //  const targetDisplay = parentWrapper.find('.inputDisplay');
445  //  const childrenTargetDisplay = targetDisplay.find('span[data-input-name="number_of_children"]');
446  //  let childrenNumber;
447  //  let valCh = 0;
448  //  let valAd = 0;
449  //  let valAll = 0;
450
451  //  if(targetName == 'number_of_adults'){
452  //    valCh = parseInt(parentWrapper.find('.numberSelect[data-input-name="number_of_children_need_futons"] .number').text());
453  //  } else if(targetName == 'number_of_children_need_futons'){
454  //    valAd = parseInt(parentWrapper.find('.numberSelect[data-input-name="number_of_adults"] .number').text());
455  //  }
456
457  //  if($(this).hasClass('minus')){
458  //    min = $(this).data('min');
459  //    max = $(this).siblings('.plus').data('max');
460  //    numberArea = $(this).siblings('.number');
461  //    number = parseInt(numberArea.text()) - 1;
462  //    childrenNumber = parseInt(parentWrapper.find('.numberSelect[data-input-name="number_of_children_need_futons"] .number').text()) + parseInt(parentWrapper.find('.numberSelect[data-input-name="number_of_children_no_need_futons"] .number').text()) - 1;
463  //    $(this).siblings('.plus').removeClass('disable');
464
465  //    if(targetName == 'number_of_adults'){
466  //      valAll = number + valCh;
467
468  //      if(valAll != 10){
469  //        $('.numberSelect[data-input-name="number_of_children_need_futons"] .plus').removeClass('disable');
470  //      }
471  //    } else if(targetName == 'number_of_children_need_futons'){
472  //      valAll = number + valAd;
473
474  //      if(valAll != 10){
475  //        $('.numberSelect[data-input-name="number_of_adults"] .plus').removeClass('disable');
476  //      }
477  //    }
478  //    if(number == min) $(this).addClass('disable');
479      
480  //    numberArea.text(number);
481
482  //    if(targetName === 'number_of_children_need_futons' || targetName === 'number_of_children_no_need_futons'){
483  //      if(childrenNumber <= 0){
484  //        childrenTargetDisplay.hide();
485  //      }else{
486  //        childrenTargetDisplay.show();
487  //      }
488  //      parentWrapper.find('input' + '[name="' + targetName + '"]').val(number);
489  //      childrenTargetDisplay.find('.number').text(childrenNumber);
490  //    }else{
491  //      parentWrapper.find('input' + '[name="' + targetName + '"]').val(number);
492  //      targetDisplay.find('span' + '[data-input-name="' + targetName + '"] .number').text(number);
493  //    }
494  //  }
495
496  //  if($(this).hasClass('plus')){
497  //    min = $(this).siblings('.minus').data('min');
498  //    max = $(this).data('max');
499  //    numberArea = $(this).siblings('.number');
500  //    number = parseInt(numberArea.text()) + 1;
501  //    childrenNumber = parseInt(parentWrapper.find('.numberSelect[data-input-name="number_of_children_need_futons"] .number').text()) + parseInt(parentWrapper.find('.numberSelect[data-input-name="number_of_children_no_need_futons"] .number').text()) + 1;
502  //    $(this).siblings('.minus').removeClass('disable');
503
504  //    if(targetName == 'number_of_adults'){
505  //      valAll = number + valCh;
506
507  //      if(valAll == 10){
508  //        $(this).addClass('disable');
509  //        $('.numberSelect[data-input-name="number_of_children_need_futons"] .plus').addClass('disable');
510  //      }
511  //    } else if(targetName == 'number_of_children_need_futons'){
512  //      valAll = number + valAd;
513
514  //      if(valAll == 10){
515  //        $(this).addClass('disable');
516  //        $('.numberSelect[data-input-name="number_of_adults"] .plus').addClass('disable');
517  //      }
518  //    } else {
519  //      if(number == max) $(this).addClass('disable');
520  //    }
521      
522  //    numberArea.text(number);
523
524  //    if(targetName === 'number_of_children_need_futons' || targetName === 'number_of_children_no_need_futons'){
525  //      if(childrenNumber <= 0){
526  //        childrenTargetDisplay.hide();
527  //      }else{
528  //        childrenTargetDisplay.show();
529  //      }
530  //      parentWrapper.find('input' + '[name="' + targetName + '"]').val(number);
531  //      childrenTargetDisplay.find('.number').text(childrenNumber);
532  //    }else{
533  //      parentWrapper.find('input' + '[name="' + targetName + '"]').val(number);
534  //      targetDisplay.find('span' + '[data-input-name="' + targetName + '"] .number').text(number);
535  //    }
536  //  }
537  //});
538  const $modal = $('#roomsModal01');
539
540  // =========================
541  // util
542  // =========================
543  function setRoomNo($room, no) {
544      $room.attr('data-room-group', no);
545      $room.find('.room-group-title').text(no + '部屋目');
546  }
547
548  function getNum($scope, inputName) {
549      return parseInt(
550          $scope.find('.numberSelect[data-input-name="' + inputName + '"] .number').text(),
551          10
552      ) || 0;
553  }
554
555  function setNum($scope, inputName, value) {
556      $scope.find('.numberSelect[data-input-name="' + inputName + '"] .number').text(String(value));
557  }
558
559  function updateMinMaxDisable($scope, inputName) {
560      const $ns = $scope.find('.numberSelect[data-input-name="' + inputName + '"]');
561      const $minus = $ns.find('.minus');
562      const $plus = $ns.find('.plus');
563
564      const min = parseInt($minus.data('min'), 10);
565      const max = parseInt($plus.data('max'), 10);
566      const val = parseInt($ns.find('.number').text(), 10) || 0;
567
568      $minus.toggleClass('disable', val <= min);
569      $plus.toggleClass('disable', val >= max);
570  }
571
572  // 上限(部屋ごと):大人+布団あり子供 <= 10
573  function updateRoomLimitDisable($room) {
574      const adult = getNum($room, 'number_of_adults');
575      const need = getNum($room, 'number_of_children_need_futons');
576      const reach = (adult + need) >= 10;
577
578      const $adultPlus = $room.find('.numberSelect[data-input-name="number_of_adults"] .plus');
579      const $needPlus = $room.find('.numberSelect[data-input-name="number_of_children_need_futons"] .plus');
580
581      if (reach) {
582          $adultPlus.addClass('disable');
583          $needPlus.addClass('disable');
584      } else {
585          // 一旦解除 → max到達なら min/max 側で再disable
586          $adultPlus.removeClass('disable');
587          $needPlus.removeClass('disable');
588
589          updateMinMaxDisable($room, 'number_of_adults');
590          updateMinMaxDisable($room, 'number_of_children_need_futons');
591      }
592  }
593
594  function setRoomDefaults($room) {
595      setNum($room, 'number_of_adults', 1);
596      setNum($room, 'number_of_children_need_futons', 0);
597      setNum($room, 'number_of_children_no_need_futons', 0);
598
599      updateMinMaxDisable($room, 'number_of_adults');
600      updateMinMaxDisable($room, 'number_of_children_need_futons');
601      updateMinMaxDisable($room, 'number_of_children_no_need_futons');
602
603      updateRoomLimitDisable($room);
604  }
605
606  function renumberRooms() {
607      const $rooms = $modal.find('.category02 .room-block .room-group');
608      $rooms.each(function (idx) {
609          setRoomNo($(this), idx + 1);
610      });
611  }
612
613  // =========================
614  // 室数変更で room-group を増減
615  // =========================
616  function syncRoomsToCount(roomCount) {
617      const $roomBlock = $modal.find('.category02 .room-block');
618      const $rooms = $roomBlock.find('.room-group');
619      const current = $rooms.length;
620
621      if (roomCount === current) return;
622
623      // 減らす:末尾から消す
624      if (roomCount < current) {
625          for (let i = current; i > roomCount; i--) {
626              $roomBlock.find('.room-group[data-room-group="' + i + '"]').remove();
627          }
628          renumberRooms();
629          return;
630      }
631
632      // 増やす:1部屋目をテンプレに clone して追加
633      if (roomCount > current) {
634          const $tpl = $roomBlock.find('.room-group[data-room-group="1"]').first();
635
636          for (let i = current + 1; i <= roomCount; i++) {
637              const $clone = $tpl.clone(false, false);
638
639              setRoomNo($clone, i);
640              setRoomDefaults($clone);
641
642              $roomBlock.append($clone);
643          }
644          renumberRooms();
645      }
646  }
647
648  // =========================
649  // 室数UI(category01)クリック
650  // =========================
651  $modal.on('click', '.js-cng_room', function () {
652      const $btn = $(this);
653      if ($btn.hasClass('disable')) return;
654
655      const $ns = $btn.closest('.numberSelect'); // 室数の numberSelect
656      const $num = $ns.find('.number');
657
658      let val = parseInt($num.text(), 10) || 0;
659      const min = parseInt($ns.find('.minus').data('min'), 10);
660      const max = parseInt($ns.find('.plus').data('max'), 10);
661
662      if ($btn.hasClass('minus')) {
663          if (val <= min) return;
664          val--;
665      } else if ($btn.hasClass('plus')) {
666          if (val >= max) return;
667          val++;
668      }
669
670      $num.text(String(val));
671
672      // disable 更新
673      $ns.find('.minus').toggleClass('disable', val <= min);
674      $ns.find('.plus').toggleClass('disable', val >= max);
675
676      // ★ 部屋UI同期
677      syncRoomsToCount(val);
678  });
679
680  // =========================
681  // 人数UI(category02)クリック:部屋単位
682  // =========================
683  $modal.on('click', '.category02 .room-group .numberSelect .icons', function () {
684      const $btn = $(this);
685      if ($btn.hasClass('disable')) return;
686
687      const $ns = $btn.closest('.numberSelect');
688      const targetName = $ns.data('inputName');
689      const $room = $btn.closest('.room-group');
690
691      const $num = $ns.find('.number');
692      let val = parseInt($num.text(), 10) || 0;
693
694      const min = parseInt($ns.find('.minus').data('min'), 10);
695      const max = parseInt($ns.find('.plus').data('max'), 10);
696
697      if ($btn.hasClass('minus')) {
698          if (val <= min) return;
699          val--;
700      } else if ($btn.hasClass('plus')) {
701          if (val >= max) return;
702
703          // ★ 上限10判定(部屋内の大人+布団あり子供のみ)
704          if (targetName === 'number_of_adults') {
705              const need = getNum($room, 'number_of_children_need_futons');
706              if ((val + 1) + need > 10) return;
707          }
708          if (targetName === 'number_of_children_need_futons') {
709              const adult = getNum($room, 'number_of_adults');
710              if (adult + (val + 1) > 10) return;
711          }
712
713          val++;
714      }
715
716      $num.text(String(val));
717
718      // min/max disable 更新
719      $ns.find('.minus').toggleClass('disable', val <= min);
720      $ns.find('.plus').toggleClass('disable', val >= max);
721
722      // 部屋上限10 disable 更新(大人/布団ありの + を止める/復活)
723      updateRoomLimitDisable($room);
724  });
725
726  // =========================
727  // 初期同期
728  // =========================
729  const initialRooms = parseInt(
730      $modal.find('.numberSelect[data-input-name="number_of_rooms"] .number').text(),
731      10
732  ) || 1;
733
734  syncRoomsToCount(initialRooms);
735
736  // 1部屋目の状態を整える
737  const $firstRoom = $modal.find('.category02 .room-block .room-group[data-room-group="1"]');
738  if ($firstRoom.length) {
739      updateMinMaxDisable($firstRoom, 'number_of_adults');
740      updateMinMaxDisable($firstRoom, 'number_of_children_need_futons');
741      updateMinMaxDisable($firstRoom, 'number_of_children_no_need_futons');
742      updateRoomLimitDisable($firstRoom);
743  }
744
745  // fix
746  inputFixButton.on('click', function () {
747      const parentWrapper = $(this).parents('.inputWrapper');
748
749      // 数値チェック(既存踏襲)
750      let isValid = true;
751      parentWrapper.find('.numberSelect .number').each(function () {
752          const txt = $(this).text();
753          if (!txt.match(/^([1-9]\d*|0)$/)) {
754              isValid = false;
755              $(this).text($(this).data('default'));
756          }
757      });
758
759      if (!isValid) {
760          alert('半角数字でご入力ください');
761          location.reload();
762          return;
763      }
764
765      // =========================
766      // 集計(roomsModal01 のみ)
767      // =========================
768      const $modal = $('#roomsModal01');
769
770      const $rooms = $modal.find('.category02 .room-block .room-group');
771      const roomCount = $rooms.length;
772
773      let totalAdult = 0;
774      let totalChildren = 0;
775
776      $rooms.each(function () {
777          const $room = $(this);
778
779          const adult = parseInt($room.find('.numberSelect[data-input-name="number_of_adults"] .number').text(), 10) || 0;
780          const childNeed = parseInt($room.find('.numberSelect[data-input-name="number_of_children_need_futons"] .number').text(), 10) || 0;
781          const childNoNeed = parseInt($room.find('.numberSelect[data-input-name="number_of_children_no_need_futons"] .number').text(), 10) || 0;
782
783          totalAdult += adult;
784          totalChildren += (childNeed + childNoNeed);
785      });
786
787      // =========================
788      // 表示反映(inputDisplay)
789      // =========================
790      const $display = parentWrapper.find('.inputDisplay[data-target="roomsModal01"]');
791
792      // 大人
793      $display
794          .find('.texts.adults[data-input-name="number_of_adults"] .number')
795          .text(totalAdult);
796
797      // 室数
798      $display
799          .find('.texts.rooms[data-input-name="number_of_rooms"] .number')
800          .text(roomCount);
801
802      // 子供(読点ごと制御)
803      const $childrenText = $display.find('.texts.children[data-input-name="number_of_children"]');
804
805      if (totalChildren > 0) {
806          $childrenText
807              .find('.number')
808              .text(totalChildren);
809
810          $childrenText.show();
811      } else {
812          $childrenText.hide();
813      }
814      
815      const parentModal = $(this).parents('.inputModal');
816      toggleFixingReserveButton();
817
818      parentModal.fadeOut(200, function () {
819          parentModal.find('.inputModalCloseButton').remove();
820      });
821  });
822
823
824  inputCloseButton.on('click', function(){
825    toggleFixingReserveButton();
826    if(bestRateValue !== 'close'){
827      fixingBestRate.fadeIn(200);
828    }
829    $(this).parents('.inputModal').fadeOut(200);
830  });
831//header subMenuButton
832  // TOP
833  topSubMenuButtonOpen.on('click', function(){
834    if($('.search-area__body').is(':visible')){
835      $('.search-area__body').slideToggle(240);
836    }
837
838    subMenuArea.addClass('active'), $('html').addClass('scroll-lock');
839    headerOverlay.fadeIn(300);
840  });
841
842  topSubMenuButtonClose.on('click', function(){
843    subMenuArea.removeClass('active'), $('html').removeClass('scroll-lock');
844    headerOverlay.stop(true,true).fadeOut(300);
845  });
846
847  $('#top .subMenuNavi a').on('click', function(){
848    subMenuArea.removeClass('active'), $('html').removeClass('scroll-lock');
849    headerOverlay.stop(true,true).fadeOut(300);
850  });
851
852  // Other
853  /*subMenuButton.on('click', function(){
854    if(!$(this).hasClass('open')){
855      $(this).addClass('open'), subMenuArea.addClass('active'), $('html').addClass('scroll-lock');
856
857      headerOverlay.fadeIn(300);
858    }else{
859      $(this).removeClass('open'), subMenuArea.removeClass('active'), $('html').removeClass('scroll-lock');
860      headerOverlay.stop(true,true).fadeOut(300);
861    }
862  });*/
863
864//header fixingReserveButton
865  const footerLogo = $('.footerLogo');
866  if (fixingReserveButton.length) {
867    footerLogo.addClass('reserveButtonOn');
868  }
869
870  fixingReserveButton.find('a').on('click', function(e){
871    e.preventDefault();
872    fixingInputArea.fadeIn(200);
873  });
874  fixingInputArea.find('.closeButton').on('click', function(){
875    fixingInputArea.fadeOut(200);
876  });
877
878//header fixingInputAreaTabs
879  const fixingInputAreaTabsColorMap = {
880    'form02': 'form-airport-theme',
881    'form05': 'form-ovs-theme',
882    'form03': 'form-train-theme',
883    'form04': 'form-car-theme',
884    'form01': 'form-default-theme'
885  };
886  const colorTargetArea = fixingInputArea;
887  const allColorClasses = 'form-airport-theme form-ovs-theme form-train-theme form-car-theme form-default-theme';
888
889  fixingInputAreaTabs.on('click', function(){
890    if($(this).hasClass('current')) return;
891    fixingInputAreaTabs.removeClass('current'), $(this).addClass('current');
892    fixingInputAreaInner.find('.forms').hide(), fixingInputAreaInner.find('.' + $(this).data('targetForm')).fadeIn(300);
893    
894    if($(this).data('targetForm') == 'form02'||$(this).data('targetForm') == 'form05'||$(this).data('targetForm') == 'form03'||$(this).data('targetForm') == 'form04'){
895      bestRateLogo.hide();
896    }else{
897      bestRateLogo.show();
898    }
899    
900    const targetForm = $(this).data('targetForm'); 
901    const newClass = fixingInputAreaTabsColorMap[targetForm]; 
902    colorTargetArea.removeClass(allColorClasses);
903    if (newClass) {
904      colorTargetArea.addClass(newClass);
905    }
906  });
907
908
909//header externalSubmitModal
910  const externalSubmit = $('button.externalSubmit');
911  const externalSubmitModal = $('.externalSubmitModal');
912  const externalSubmitButton = externalSubmitModal.find('.externalSubmitButton');
913  const externalSubmitModalClose = externalSubmitModal.find('.externalSubmitModalClose');
914
915  externalSubmit.on('click', function(){
916    const externalButton = $(this);
917    const externalForm = externalButton.closest('form');
918    const fixingInputFacilitys = externalForm.find('.inputWrapper.facilitys select');
919    if(fixingInputFacilitys.val() === null){
920      alert('施設を選択してください');
921      return false;
922    }
923
924    if(!$(this).hasClass('modalOpen')){
925      $(this).siblings('.externalSubmitModal').fadeIn(200), $(this).addClass('modalOpen');
926      return false;
927    }else{
928      $(this).siblings('.externalSubmitModal').fadeOut(200), $(this).removeClass('modalOpen');
929    }
930  });
931
932  externalSubmitButton.on('click', function(){$(this).parent('.externalSubmitModal').siblings('button.externalSubmit').click();});
933
934  externalSubmitModalClose.on('click', function(){
935    $(this).parent('.externalSubmitModal').fadeOut(200);
936    $(this).parent('.externalSubmitModal').siblings('button.externalSubmit').removeClass('modalOpen');
937  });
938
939  $('#js-hcAirHeader').on('change', function(){
940    hcAirChange('#js-hcAirHeader', '#js-goDepAirPortHeader');
941  });
942
943  $('#js-hcAirMain').on('change', function(){
944    hcAirChange('#js-hcAirMain', '#js-goDepAirPortMain');
945  });
946
947  function hcAirChange(targetId, changeId) {
948    let targetText = $(targetId + '[name=hc] option:selected').text();
949    let changeTarget = $(changeId + '[name=goDepAirPort]');
950
951    if(targetText === 'ドーミーインPREMIUM札幌' || 
952      targetText === 'ドーミーイン札幌ANNEX' || 
953      targetText === 'ドーミーイン稚内' || 
954      targetText === 'ドーミーイン網走' || 
955      targetText === 'ドーミーイン北見' || 
956      targetText === 'ドーミーイン旭川' || 
957      targetText === 'ラビスタ富良野ヒルズ' || 
958      targetText === 'ドーミーイン苫小牧' || 
959      targetText === 'ドーミーイン帯広' || 
960      targetText === 'ドーミーインPREMIUM小樽' || 
961      targetText === 'ドーミーイン東室蘭' || 
962      targetText === 'ドーミーインPREMIUM釧路' || 
963      targetText === 'ドーミーイン弘前' || 
964      targetText === 'ドーミーイン青森' || 
965      targetText === 'ドーミーイン本八戸' || 
966      targetText === 'ドーミーイン秋田' || 
967      targetText === 'ドーミーインEXPRESS豊橋' || 
968      targetText === '天然温泉 剱の湯 御宿 野乃富山' || 
969      targetText === 'ドーミーイン富山' || 
970      targetText === '天然温泉 加賀の宝泉 御宿 野乃金沢' || 
971      targetText === 'ドーミーイン金沢' || 
972      targetText === 'ドーミーインPREMIUM福井' || 
973      targetText === 'ドーミーイン敦賀' || 
974      targetText === 'ドーミーインPREMIUMなんば' || 
975      targetText === 'ドーミーインPREMIUMなんばANNEX' || 
976      targetText === '天然温泉 花風の湯 御宿 野乃なんば' || 
977      targetText === 'ドーミーイン大阪谷町' || 
978      targetText === 'ドーミーインPREMIUM大阪北浜' || 
979      targetText === '天然温泉 花波の湯 御宿 野乃大阪淀屋橋' || 
980      targetText === 'ドーミーインPREMIUM京都駅前' || 
981      targetText === '天然温泉 蓮花の湯 御宿 野乃京都七条' || 
982      targetText === '天然温泉 吉野桜の湯 御宿 野乃奈良' || 
983      targetText === 'ドーミーイン姫路' || 
984      targetText === 'ドーミーイン神戸元町' || 
985      targetText === 'ドーミーインPREMIUM和歌山' || 
986      targetText === 'ドーミーイン倉敷' || 
987      targetText === 'ドーミーイン岡山' || 
988      targetText === 'ドーミーイン広島' || 
989      targetText === 'ドーミーイン広島ANNEX' || 
990      targetText === 'ドーミーイン出雲' || 
991      targetText === 'ドーミーインEXPRESS出雲の國 雲南' || 
992      targetText === 'ドーミーインEXPRESS松江' || 
993      targetText === '天然温泉 だんだんの湯 御宿 野乃松江' || 
994      targetText === '天然温泉 夕凪の湯 御宿 野乃境港' || 
995      targetText === 'ドーミーインPREMIUM下関' || 
996      targetText === 'ドーミーイン高松' || 
997      targetText === 'ドーミーイン高松中央公園前' || 
998      targetText === 'ドーミーイン松山' || 
999      targetText === 'ドーミーイン高知' || 
1000      targetText === 'ドーミーイン博多祇園' || 
1001      targetText === 'ドーミーインPREMIUM博多・キャナルシティ前' || 
1002      targetText === 'ドーミーイン大分' || 
1003      targetText === '別府八湯 御宿 野乃別府' || 
1004      targetText === 'ドーミーイン長崎新地中華街' || 
1005      targetText === 'ドーミーインPREMIUM長崎駅前' || 
1006      targetText === 'ドーミーイン熊本' || 
1007      targetText === 'ドーミーイン宮崎' || 
1008      targetText === 'ドーミーイン鹿児島'
1009    ) {
1010      changeTarget.val('TYO');
1011    } else if(targetText === 'ドーミーインEXPRESS仙台広瀬通' || 
1012      targetText === 'ドーミーイン仙台ANNEX' || 
1013      targetText === 'ドーミーイン仙台駅前' || 
1014      targetText === 'ドーミーインEXPRESS仙台シーサイド' || 
1015      targetText === '天然温泉 杜都の湯 御宿 野乃仙台' || 
1016      targetText === 'ドーミーイン盛岡' || 
1017      targetText === 'ドーミーインEXPRESS郡山' || 
1018      targetText === 'ドーミーイン東京八丁堀' || 
1019      targetText === 'ドーミーインEXPRESS目黒青葉台' || 
1020      targetText === 'ドーミーインPREMIUM渋谷神宮前' || 
1021      targetText === 'ドーミーインPREMIUM銀座' || 
1022      targetText === 'ドーミーイン上野・御徒町' || 
1023      targetText === 'ドーミーイン秋葉原' || 
1024      targetText === 'ドーミーイン後楽園' || 
1025      targetText === 'ドーミーインEXPRESS浅草' || 
1026      targetText === '天然温泉 凌雲の湯 御宿 野乃浅草' || 
1027      targetText === '天然温泉 凌天の湯 御宿 野乃浅草別邸' || 
1028      targetText === 'ドーミーインPREMIUM神田' || 
1029      targetText === 'ドーミーインPREMIUM東京小伝馬町' || 
1030      targetText === 'ドーミーイン池袋' || 
1031      targetText === 'ドーミーイン三島' || 
1032      targetText === 'ドーミーインEXPRESS富士山御殿場' || 
1033      targetText === 'ドーミーイン水戸' || 
1034      targetText === 'ドーミーイン高崎' || 
1035      targetText === 'ドーミーイン前橋' || 
1036      targetText === 'グローバルキャビン横浜中華街' || 
1037      targetText === 'ドーミーイン千葉City Soga' || 
1038      targetText === 'ドーミーイン川崎' || 
1039      targetText === 'ドーミーイン新潟' || 
1040      targetText === 'ドーミーイン甲府' || 
1041      targetText === 'ドーミーイン甲府丸の内'
1042    ) {
1043      $('select[name="goDepAirPort"]').val('OSA');
1044    } else if(targetText === 'ドーミーインEXPRESS掛川' || 
1045      targetText === 'ドーミーイン長野' || 
1046      targetText === 'ドーミーイン松本' || 
1047      targetText === '天然温泉 あづみの湯 御宿 野乃松本'
1048    ) {
1049      changeTarget.val('FUK');
1050    } else if(targetText === 'ドーミーインPREMIUM名古屋栄' || 
1051      targetText === 'ドーミーインEXPRESS三河安城' || 
1052      targetText === 'ドーミーイン岐阜駅前' || 
1053      targetText === 'ドーミーイン津'
1054    ) {
1055      changeTarget.val('CTS');
1056    }
1057  }
1058
1059
1060//header fixingBestRate
1061  $(window).on('load resize scroll', function(){
1062    if($(window).scrollTop() + $(window).height() > footerContainer.offset().top){
1063      fixingBestRate.fadeOut(200);
1064    }else{
1065      if(bestRateValue !== 'close'){
1066        fixingBestRate.fadeIn(200);
1067      }
1068    }
1069  });
1070  fixingBestRate.find('.closeButton').on('click', function(){
1071    bestRateKey = 'bestRateKey';
1072    bestRateValue =  'close';
1073    window.localStorage.setItem(bestRateKey, bestRateValue);
1074
1075    fixingBestRate.fadeOut(300, function(){fixingBestRate.remove();});
1076  });
1077
1078
1079//commonBestRateIcon01 close
1080  commonBestRateIcon01.find('.closeButton').on('click', function(){
1081    const closeTarget = $(this).parent('.commonBestRateIcon01');
1082    closeTarget.fadeOut(300, function(){closeTarget.remove();});
1083
1084    bestRateKey = 'bestRateKey';
1085    bestRateValue =  'close';
1086    window.localStorage.setItem(bestRateKey, bestRateValue);
1087  });
1088
1089//footer footerFixingButtons reserveButton
1090  const footerFixingreserveButtons = $('.footerFixingButtons .reserveButton');
1091  footerFixingreserveButtons.find('a').on('click', function(e){
1092    e.preventDefault();
1093    if($('.footerMenuArea').hasClass('active')){$('.footerFixingButtons .menuButton a').click();}
1094    fixingInputArea.fadeIn(200);
1095  });
1096
1097
1098//footer footerFixingButtons menuButton
1099  const footerFixingMenuButtons = $('.footerFixingButtons .menuButton');
1100  const footerMenuArea = $('.footerMenuArea');
1101  const footerMenuAreaCloseButton = footerMenuArea.find('.footerMenuCloseButton');
1102  footerFixingMenuButtons.find('a').on('click', function(e){
1103    e.preventDefault();
1104    if(!footerFixingMenuButtons.hasClass('open')){
1105      footerFixingMenuButtons.addClass('open'), footerFixingMenuButtons.find('a').text('CLOSE'), footerMenuArea.addClass('active');
1106    }else{
1107      footerFixingMenuButtons.removeClass('open'), footerFixingMenuButtons.find('a').text('MENU'), footerMenuArea.removeClass('active');
1108    }
1109  });
1110  footerMenuAreaCloseButton.on('click', function(e){footerFixingMenuButtons.removeClass('open'), 
1111  footerFixingMenuButtons.find('a').text('MENU'), footerMenuArea.removeClass('active');});
1112
1113
1114//commonTabs
1115  const commonTabs01 = $('.commonTabs01');
1116  const commonTabList01 = $('.commonTabList01 .tabs');
1117  commonTabs01.find('> li > a').on('click', function(e){
1118    e.preventDefault();
1119    const triggerTabs = $(this).parents('.commonTabs01');
1120    const targetAreas = triggerTabs.siblings('.commonTabAreas01');
1121    triggerTabs.find('> li').removeClass('current'), $(this).parent('li').addClass('current');
1122    targetAreas.hide(), targetAreas.eq($(this).parent('li').index()).fadeIn(300);
1123  });
1124
1125  commonTabList01.find('li').on('click', function(){
1126    const triggerTabs = $(this).parent('.tabs');
1127    const targetContents = triggerTabs.siblings('.tabContents');
1128    triggerTabs.find('li').removeClass('current'), $(this).addClass('current');
1129    targetContents.hide(), targetContents.eq($(this).index()).fadeIn(300);
1130  });
1131
1132//top various
1133  /* if($('#top').length){
1134    const appeals = $('main section.appeals');
1135    const appealCategorys = appeals.find('.categorys li');
1136    const appealImages = appeals.find('.images');
1137
1138    //appeals
1139    appealCategorys.on('click', function(){
1140      const targetData = '.images[data-images-category="' + $(this).data('targetCategory') + '"]';
1141      appealCategorys.removeClass('current'), $(this).addClass('current');
1142      appealImages.hide(), appeals.find(targetData).fadeIn().css({display: 'flex'});
1143    });
1144
1145    //news slide
1146    $('#slide03').slick({
1147      autoplay: true,
1148      autoplaySpeed: 4000,
1149      slidesToShow: 5,
1150      pauseOnFocus: false,
1151      pauseOnHover: false,
1152      pauseOnDotsHover: false,
1153      appendArrows: $('.newsSlideController'),
1154      prevArrow:'<li class="prev"></li>',
1155      nextArrow:'<li class="next"></li>',
1156      dots: false,
1157      responsive: [
1158        {
1159          breakpoint: 1025,
1160          settings: {
1161            slidesToShow: 3
1162          }
1163        },
1164        {
1165          breakpoint: 768,
1166          settings: {
1167            centerMode: true,
1168            centerPadding: '10%',
1169            slidesToShow: 1
1170          }
1171        }
1172      ]
1173    });
1174
1175  } */
1176
1177
1178//pamphlet sectionTabs
1179  const pamphletSectionTabs = $('#pamphlet .sectionTabs li');
1180  const pamphletSections = $('#pamphlet .sections');
1181  pamphletSectionTabs.find('a').on('click', function(e){
1182    e.preventDefault();
1183    pamphletSectionTabs.removeClass('current'), $(this).parent('li').addClass('current');
1184    pamphletSections.hide(), pamphletSections.eq($(this).parent('li').index()).fadeIn(300);
1185  });
1186
1187
1188//dormyinn top various
1189  const introSection = $('section.intro');
1190  const searchTypeTabs = introSection.find('.searchTypeTabs li');
1191  const searchTypes = introSection.find('.searchTypes');
1192  const searchTypesMap = introSection.find('.searchTypes.map');
1193  const searchTypesArea = introSection.find('.searchTypes.area');
1194  const searchTypesAreaTabContents = searchTypesArea.find('.tabContents');
1195  const searchAreaMaps = searchTypesMap.find('.searchAreaMaps');
1196  const nationwideMap = $('main .searchAreaMaps.nationwide');
1197  const nationwideButtons = nationwideMap.find('.areaButtons');
1198  const areaMaps = $('.commonMapSearchArea01 .searchAreaMaps');
1199  const nationwideMapButton = $('.commonMapSearchArea01 .nationwideMapButton a');
1200
1201  $(window).on('load resize', function(){
1202    let searchTypesMaxH = 0 ,searchAreaMapsMaxH = 0;
1203    searchTypes.height('auto'), searchTypesAreaTabContents.height(0);
1204    searchAreaMaps.each(function(i){
1205      searchAreaMapsMaxH = Math.max(searchAreaMapsMaxH, $(this).innerHeight());
1206      if(searchAreaMaps.length == i + 1){
1207        searchAreaMapsMaxH = searchAreaMapsMaxH/* + searchTypesMap.find('.inputArea').innerHeight()*/;
1208        searchTypes.each(function(i){
1209          searchTypesMaxH = Math.max(searchTypesMaxH, searchAreaMapsMaxH, $(this).innerHeight());
1210          if(searchTypes.length == i + 1){
1211            searchTypes.height(searchTypesMaxH);
1212            searchTypesAreaTabContents.height(searchTypesMaxH - parseInt(searchTypesArea.find('.commonTabList01 > .tabContents').css('paddingTop')) - parseInt(searchTypesArea.find('.commonTabList01 > .tabContents').css('paddingBottom')) - searchTypesArea.find('.areaTabs').innerHeight() - searchTypesArea.find('.commonTabAreas01:visible').find('.commonTabList01 > .tabs').innerHeight());
1213          }
1214        });
1215      }
1216    });
1217  });
1218
1219  searchTypeTabs.on('click', function(){
1220    const tabIndex = $(this).index();
1221    
1222    searchTypeTabs.removeClass('current'), $(this).addClass('current');
1223    searchTypes.removeClass('visible'), searchTypes.eq($(this).index()).addClass('visible');
1224    $('#slide02').slick('setPosition');
1225    
1226    // フォームの色を変更
1227    $('#js-searchAreaDiv').removeClass('form-airport-theme form-ovs-theme form-train-theme form-car-theme');
1228
1229    // ボタンの色を変更
1230    $('#js-mainAirSubmit').removeClass('btn-airport-theme btn-train-theme btn-car-theme');
1231
1232    if (tabIndex === 2) { // 国内航空券
1233      $('#js-searchAreaDiv').addClass('form-airport-theme');
1234      $('#js-mainAirSubmit').addClass('btn-airport-theme');
1235    } else if (tabIndex === 3) { // 海外航空券(SITE-918)
1236      $('#js-searchAreaDiv').addClass('form-ovs-theme');
1237      $('#js-mainOverseasAirSubmit').addClass('btn-ovs-theme');
1238    } else if (tabIndex === 4) { // JR
1239      $('#js-searchAreaDiv').addClass('form-train-theme');
1240      $('#js-mainJrSubmit').addClass('btn-train-theme');
1241    } else if (tabIndex === 5) { // レンタカー
1242      $('#js-searchAreaDiv').addClass('form-car-theme');
1243      $('#js-mainRentalCarSubmit').addClass('btn-car-theme');
1244    }
1245  });
1246
1247  nationwideMap.find('.areaButtons li').on({
1248    mouseenter: function(){
1249      const targetMaps = $(this).parent('.areaButtons').siblings('.areaMaps');
1250      targetMaps.find('li').hide(), targetMaps.find('li').eq($(this).index()+1).show();
1251    },
1252    mouseleave: function(){
1253      const targetMaps = $(this).parent('.areaButtons').siblings('.areaMaps');
1254      targetMaps.find('li').hide(), targetMaps.find('li').eq(0).show();
1255    }
1256  });
1257
1258  $('.searchAreaMaps .areaButtons li').on({
1259    mouseenter: function(){
1260      const targetMaps = $(this).parent('.areaButtons').siblings('.areaMap');
1261      targetMaps.find('img').hide(), targetMaps.find('img').eq($(this).index()+1).show();
1262    },
1263    mouseleave: function(){
1264      const targetMaps = $(this).parent('.areaButtons').siblings('.areaMap');
1265      targetMaps.find('img').hide(), targetMaps.find('img').eq(0).show();
1266    }
1267  });
1268
1269  if($('#dormyinnTop').length){
1270    const targetMaps = $(this).parent('.areaButtons').siblings('.areaMaps');
1271
1272    // チケット743対応: MAP非表示のためコメントアウト
1273    // searchTypes.first().addClass('visible'), searchAreaMaps.first().addClass('visible');
1274
1275    nationwideButtons.find('> li > a').on('click', function(e){
1276      if($(this).parent('li').hasClass('noDetailMap')) return;
1277      e.preventDefault();
1278      const buttonIndex = $(this).parent('li').index();
1279      const targetMaps = $(this).parents('.searchAreaMaps');
1280      if(targetMaps.siblings().length <= 0){
1281        const targetTabAreas = $(this).parents('.commonMapSearchArea01').next('.listArea').find('.commonTabAreas01');
1282        targetTabAreas.hide(), targetTabAreas.eq(buttonIndex).fadeIn(300);
1283      }else{
1284        targetMaps.removeClass('visible'), targetMaps.siblings().removeClass('visible'), targetMaps.siblings().eq(buttonIndex).addClass('visible');
1285      }
1286    });
1287
1288    nationwideMapButton.on('click', function(e){
1289      e.preventDefault();
1290      $(this).parents('.commonMapSearchArea01').find('.searchAreaMaps').removeClass('visible'), $(this).parents('.commonMapSearchArea01').find('.searchAreaMaps.nationwide').addClass('visible');
1291    });
1292  }
1293
1294  const mainAirForm = $('#js-mainAirForm');
1295  const mainAirSubmit = $('#js-mainAirSubmit');
1296  const mainAirFacilitys = $('#js-mainAirFacilitys select');
1297  const mainAirSubmitModal = $('#js-mainAirSubmitModal');
1298  const mainAirSubmitButton = $('#js-mainAirSubmitButton');
1299  const mainAirSubmitModalClose = $('#js-mainAirSubmitModalClose');
1300  mainAirSubmit.on('click', function(){
1301    if(mainAirFacilitys.val() === null){
1302      alert('施設を選択してください');
1303      return false;
1304    }
1305
1306    if(!$(this).hasClass('modalOpen')){
1307      mainAirSubmitModal.fadeIn(200), $(this).addClass('modalOpen');
1308      return false;
1309    }else{
1310      mainAirSubmitModal.fadeOut(200), $(this).removeClass('modalOpen');
1311    }
1312  });
1313
1314  mainAirSubmitButton.on('click', function(){
1315    mainAirForm.submit();
1316    mainAirSubmitModal.fadeOut(200), mainAirSubmit.removeClass('modalOpen');
1317  });
1318
1319  mainAirSubmitModalClose.on('click', function(){
1320    mainAirSubmitModal.fadeOut(200), mainAirSubmit.removeClass('modalOpen');
1321  });
1322
1323  // SITE-918 海外航空券+ホテル(選択→モーダル→該当ovs URLへ遷移。Air/JRの導線を踏襲)
1324  const mainOverseasAirForm = $('#js-mainOverseasAirForm');
1325  const mainOverseasAirSubmit = $('#js-mainOverseasAirSubmit');
1326  const mainOverseasAirFacilitys = $('#js-mainOverseasAirFacilitys select');
1327  const mainOverseasAirSubmitModal = $('#js-mainOverseasAirSubmitModal');
1328  const mainOverseasAirSubmitButton = $('#js-mainOverseasAirSubmitButton');
1329  const mainOverseasAirSubmitModalClose = $('#js-mainOverseasAirSubmitModalClose');
1330  mainOverseasAirSubmit.on('click', function(){
1331    if(mainOverseasAirFacilitys.val() === null){
1332      alert('施設を選択してください');
1333      return false;
1334    }
1335
1336    if(!$(this).hasClass('modalOpen')){
1337      mainOverseasAirSubmitModal.fadeIn(200), $(this).addClass('modalOpen');
1338      return false;
1339    }else{
1340      mainOverseasAirSubmitModal.fadeOut(200), $(this).removeClass('modalOpen');
1341    }
1342  });
1343
1344  mainOverseasAirSubmitButton.on('click', function(){
1345    mainOverseasAirForm.submit();
1346    mainOverseasAirSubmitModal.fadeOut(200), mainOverseasAirSubmit.removeClass('modalOpen');
1347  });
1348
1349  mainOverseasAirSubmitModalClose.on('click', function(){
1350    mainOverseasAirSubmitModal.fadeOut(200), mainOverseasAirSubmit.removeClass('modalOpen');
1351  });
1352
1353  const mainJrForm = $('#js-mainJrForm');
1354  const mainJrSubmit = $('#js-mainJrSubmit');
1355  const mainJrFacilitys = $('#js-mainJrFacilitys select');
1356  const mainJrSubmitModal = $('#js-mainJrSubmitModal');
1357  const mainJrSubmitButton = $('#js-mainJrSubmitButton');
1358  const mainJrSubmitModalClose = $('#js-mainJrSubmitModalClose');
1359  mainJrSubmit.on('click', function(){
1360    if(mainJrFacilitys.val() === null){
1361      alert('施設を選択してください');
1362      return false;
1363    }
1364
1365    if(!$(this).hasClass('modalOpen')){
1366      mainJrSubmitModal.fadeIn(200), $(this).addClass('modalOpen');
1367      return false;
1368    }else{
1369      mainJrSubmitModal.fadeOut(200), $(this).removeClass('modalOpen');
1370    }
1371  });
1372
1373  mainJrSubmitButton.on('click', function(){
1374    mainJrForm.submit();
1375    mainJrSubmitModal.fadeOut(200), mainJrSubmit.removeClass('modalOpen');
1376  });
1377
1378  mainJrSubmitModalClose.on('click', function(){
1379    mainJrSubmitModal.fadeOut(200), mainJrSubmit.removeClass('modalOpen');
1380  });
1381
1382  const mainRentalCarForm = $('#js-mainRentalCarForm');
1383  const mainRentalCarSubmit = $('#js-mainRentalCarSubmit');
1384  const mainRentalCarFacilitys = $('#js-mainRentalCarFacilitys select');
1385  const mainRentalCarSubmitModal = $('#js-mainRentalCarSubmitModal');
1386  const mainRentalCarSubmitButton = $('#js-mainRentalCarSubmitButton');
1387  const mainRentalCarSubmitModalClose = $('#js-mainRentalCarSubmitModalClose');
1388  mainRentalCarSubmit.on('click', function(){
1389    if(mainRentalCarFacilitys.val() === null){
1390      alert('施設を選択してください');
1391      return false;
1392    }
1393
1394    if(!$(this).hasClass('modalOpen')){
1395      mainRentalCarSubmitModal.fadeIn(200), $(this).addClass('modalOpen');
1396      return false;
1397    }else{
1398      mainRentalCarSubmitModal.fadeOut(200), $(this).removeClass('modalOpen');
1399    }
1400  });
1401
1402  mainRentalCarSubmitButton.on('click', function(){
1403    mainRentalCarForm.submit();
1404    mainRentalCarSubmitModal.fadeOut(200), mainRentalCarSubmit.removeClass('modalOpen');
1405  });
1406
1407  mainRentalCarSubmitModalClose.on('click', function(){
1408    mainRentalCarSubmitModal.fadeOut(200), mainRentalCarSubmit.removeClass('modalOpen');
1409  });
1410
1411
1412//nationwideMap only visible
1413  if(nationwideMap.length){
1414    let tabAreaMap = false, targetNationwideMap;
1415    nationwideMap.each(function(){
1416      if($(this).siblings().length <= 0){
1417        $(this).addClass('visible');
1418        //tabAreaMap = true, targetNationwideMap = $(this);
1419      }
1420    });
1421
1422    /*if(tabAreaMap){
1423      const targetNationwideMapButton = targetNationwideMap.find('.areaButtons > li');
1424      targetNationwideMapButton.find('> a').on('click', function(){
1425        const targetAreaMaps = $(this).parents('.areaButtons').next('.areaMaps');
1426        targetNationwideMapButton.find('> li').removeClass('current'), $(this).parent('li').addClass('current');
1427        targetAreaMaps.find('li').hide(), targetAreaMaps.find('li').eq($(this).parent('li').inde()).fadeIn(200);
1428      });
1429    }*/
1430
1431  }
1432
1433
1434//dormyinnTop sp commonSectionTabs
1435  const commonSectionTabs = $('.commonSectionTabs li');
1436  const topCommonSections = $('.topCommonSections');
1437  commonSectionTabs.on('click', function(){
1438    commonSectionTabs.removeClass('current'), $(this).addClass('current');
1439    topCommonSections.hide(), topCommonSections.eq($(this).index()).fadeIn(300);
1440    $('#slide04, #slide05, #slide06').slick('setPosition');
1441  });
1442
1443
1444//dormyinnTop slider
1445  if ($('#dormyinnTop').length) {
1446    var $slide01 = $('#slide01');
1447
1448    var $heading = $('.mainVisual h2');
1449    // テキスト非表示
1450    $heading.hide();
1451    // スライド切り替え前
1452    $slide01.on('beforeChange', function(event, slick, currentSlide, nextSlide) {
1453      if (nextSlide === 0) {
1454        $heading.hide();
1455      } else {
1456        $heading.show();
1457      }
1458    });
1459    // 初期表示制御:slick初期化直後に非表示 or 表示を判断
1460    $slide01.on('init', function(event, slick) {
1461      if (slick.currentSlide === 0) {
1462        $heading.hide();         // 最初は即時隠す
1463        // $heading.fadeIn(300); // 最初からフェードイン
1464      } else {
1465        $heading.show();         // 念のため、それ以外なら表示
1466      }
1467    });
1468
1469    // slick初期化
1470    $slide01.slick({
1471      autoplay: true,
1472      fade: true,
1473      autoplaySpeed: 4000,
1474      slidesToShow: 1,
1475      pauseOnFocus: false,
1476      pauseOnHover: false,
1477      pauseOnDotsHover: false,
1478      arrows: false,
1479      dots: true
1480    });
1481    // スライド切替のテキスト制御を無効化
1482    
1483    // スライド切り替え後のイベント
1484    /*$slide01.on('afterChange', function(event, slick, currentSlide) {
1485      if (currentSlide === 0) {
1486        $heading.fadeOut(300);   // 0番スライドならフェードアウト
1487      } else {
1488        $heading.fadeIn(300);    // それ以外ならフェードイン
1489      }
1490    });*/
1491   
1492    $('#slide02').slick({
1493      autoplay: true,
1494      autoplaySpeed: 4000,
1495      slidesToShow: 3,
1496      pauseOnFocus: false,
1497      pauseOnHover: false,
1498      pauseOnDotsHover: false,
1499      appendArrows: $('.controller03'),
1500      prevArrow: '<li class="prev"></li>',
1501      nextArrow: '<li class="next"></li>',
1502      centerMode: true,
1503      centerPadding: '0',
1504      dots: true,
1505      responsive: [{
1506          breakpoint: 768,
1507          settings: {
1508            slidesToShow: 1
1509          }
1510      }]
1511    });
1512
1513    $('#slide03').slick({
1514      autoplay: true,
1515      autoplaySpeed: 4000,
1516      slidesToShow: 3,
1517      pauseOnFocus: false,
1518      pauseOnHover: false,
1519      pauseOnDotsHover: false,
1520      appendArrows: $('.controller04'),
1521      prevArrow: '<li class="prev"></li>',
1522      nextArrow: '<li class="next"></li>',
1523      dots: true,
1524      responsive: [{
1525          breakpoint: 1025,
1526          settings: {
1527            slidesToShow: 3
1528          }
1529      }, {
1530          breakpoint: 768,
1531          settings: {
1532            slidesToShow: 1
1533          }
1534      }]
1535    });
1536  }
1537
1538
1539//top slider
1540  /*if($('#top').length){
1541    $('#slide01').slick({
1542      autoplay: true,
1543      fade: true,
1544      autoplaySpeed: 4000,
1545      slidesToShow: 1,
1546      pauseOnFocus: false,
1547      pauseOnHover: false,
1548      pauseOnDotsHover: false,
1549      arrows: false,
1550      dots: true
1551    });
1552
1553    $('#slide02').slick({
1554      autoplay: true,
1555      autoplaySpeed: 4000,
1556      slidesToShow: 1,
1557      pauseOnFocus: false,
1558      pauseOnHover: false,
1559      pauseOnDotsHover: false,
1560      appendArrows: $('.newsSlideController'),
1561      prevArrow:'<li class="prev"></li>',
1562      nextArrow:'<li class="next"></li>',
1563      centerMode: true,
1564      centerPadding: '20%',
1565      dots: true,
1566      responsive: [
1567        {
1568          breakpoint: 1025,
1569          settings: {
1570            slidesToShow: 2,
1571            centerMode: false,
1572            centerPadding: '0'
1573          }
1574        },
1575        {
1576          breakpoint: 768,
1577          settings: {
1578            slidesToShow: 1,
1579            centerMode: false,
1580            centerPadding: '0'
1581          }
1582        }
1583      ]
1584    });
1585  } */
1586
1587
1588//hotels various
1589  if($('#hotels').length){
1590    const hotelsListSearch = $('main .searchTypes.listSearch');
1591
1592    const hotelsListButtons01 = hotelsListSearch.find('.listButtons.buttons01 li');
1593    const hotelsListContents01 = hotelsListSearch.find('.variableContents.contents01');
1594    const hotelsListButtons02 = hotelsListSearch.find('.listButtons.buttons02 li');
1595    const hotelsListContents02 = hotelsListSearch.find('.variableContents.contents02');
1596    const hotelsListButtons03 = hotelsListSearch.find('.listButtons.buttons03 li');
1597    const hotelsListContents03 = hotelsListSearch.find('.variableContents.contents03');
1598
1599    const hotelsListAreaName = hotelsListSearch.find('.variableContents.contents02 .areaName');
1600    const hotelsFooterLinkk = $('#menu1Container .footerLink');
1601    const hotelsHash = location.hash;
1602
1603    //hotelsListSearch
1604    hotelsListButtons01.on('click', function(){
1605      hotelsListButtons01.removeClass('current'), hotelsListButtons02.removeClass('current'), hotelsListButtons03.removeClass('current'), $(this).addClass('current');
1606      hotelsListContents01.hide(), hotelsListContents02.hide(), hotelsListContents03.hide(), hotelsListContents01.eq($(this).index()).fadeIn();
1607
1608      let windowSize = window.innerWidth;
1609      if (windowSize < 767) {
1610        let speed = 500;
1611        let target = $('#js-spHotelListSwing');
1612        let headH = $('.headerContainer').innerHeight();;
1613        let position = target.offset().top;
1614            position = position - headH;
1615        $("html, body").animate({scrollTop:position}, speed, "swing");
1616        return false;
1617      }
1618    });
1619    hotelsListButtons02.on('click', function(){
1620      hotelsListButtons01.removeClass('current'), hotelsListButtons02.removeClass('current'), hotelsListButtons03.removeClass('current'), $(this).addClass('current');
1621      hotelsListContents01.hide(), hotelsListContents02.hide(), hotelsListContents03.hide(), hotelsListContents02.eq($(this).index()).fadeIn();
1622
1623      let windowSize = window.innerWidth;
1624      if (windowSize < 767) {
1625        let speed = 500;
1626        let target = $('#js-spHotelListSwing');
1627        let headH = $('.headerContainer').innerHeight();;
1628        let position = target.offset().top;
1629            position = position - headH;
1630        $("html, body").animate({scrollTop:position}, speed, "swing");
1631        return false;
1632      }
1633    });
1634    hotelsListButtons03.on('click', function(){
1635      hotelsListButtons01.removeClass('current'), hotelsListButtons02.removeClass('current'), hotelsListButtons03.removeClass('current'), $(this).addClass('current');
1636      hotelsListContents01.hide(), hotelsListContents02.hide(), hotelsListContents03.hide(), hotelsListContents03.eq($(this).index()).fadeIn();
1637
1638      let windowSize = window.innerWidth;
1639      if (windowSize < 767) {
1640        let speed = 500;
1641        let target = $('#js-spHotelListSwing');
1642        let headH = $('.headerContainer').innerHeight();;
1643        let position = target.offset().top;
1644            position = position - headH;
1645        $("html, body").animate({scrollTop:position}, speed, "swing");
1646        return false;
1647      }
1648    });
1649
1650    //hotelsListAreas
1651    hotelsListAreaName.addClass('listOpen'), hotelsListAreaName.next('ul').show().css({display: 'flex'});
1652    hotelsListAreaName.on('click', function(e){
1653      $(this).toggleClass('listOpen');
1654      if($(this).hasClass('listOpen')){
1655        $(this).next('ul').slideDown(200).css({display: 'flex'});
1656      }else{
1657        $(this).next('ul').stop(true, true).slideUp(200);
1658      }
1659    });
1660
1661    if(hotelsHash){
1662      const hotelsTargetCategory = '.' + hotelsHash.replace('#', '');
1663      if(hotelsTargetCategory === '.standard' || hotelsTargetCategory === '.premium' || hotelsTargetCategory === '.express' || hotelsTargetCategory === '.nono'){
1664        hotelsListSearch.find('.listButtons.buttons02').find(hotelsTargetCategory).click();
1665      }
1666      else if(hotelsTargetCategory === 'new' || hotelsTargetCategory === 'renewal') {
1667        hotelsListSearch.find('.listButtons.buttons03').find(hotelsTargetCategory).click();
1668      }
1669      else {
1670        hotelsListSearch.find('.listButtons.buttons01').find(hotelsTargetCategory).click();
1671      }
1672    }
1673
1674    hotelsFooterLinkk.on('click', function() {
1675      let tagetHref = $(this).attr('href');
1676
1677      if ($('.map').length > 0) {
1678        // location.href でリンク先に遷移させる
1679        window.location.href = tagetHref;
1680        return false;
1681      }
1682
1683      let hashIndex = tagetHref.indexOf('#');
1684      let substring = tagetHref.substring(hashIndex + 1);
1685      let targetCategory = '.' + substring;
1686
1687      hotelsListSearch.find('.listButtons.buttons01').find(targetCategory).click();
1688
1689      $('body, html').animate({ scrollTop: 0 }, 500);
1690      return false;
1691    });
1692  }
1693
1694
1695//hotelsDetail slider
1696  if($('#hotelsDetail.hotelsDetailTop').length){
1697    $('#slide01').slick({
1698      autoplay: true,
1699      fade: true,
1700      autoplaySpeed: 4000,
1701      slidesToShow: 1,
1702      pauseOnFocus: false,
1703      pauseOnHover: false,
1704      pauseOnDotsHover: false,
1705      arrows: false,
1706      dots: true
1707    });
1708
1709    $('.sections:not(.neighborhood) .commonSlider01').each(function(){
1710      const targetSlider = $(this).find('.slider');
1711      targetSlider.slick({
1712        autoplay: true,
1713        autoplaySpeed: 4000,
1714        slidesToShow: 3,
1715        pauseOnFocus: false,
1716        pauseOnHover: false,
1717        pauseOnDotsHover: false,
1718        appendArrows: $(this).find('.controller'),
1719        prevArrow:'<li class="prev"></li>',
1720        nextArrow:'<li class="next"></li>',
1721        dots: true,
1722        responsive: [
1723          {
1724            breakpoint: 1025,
1725            settings: {
1726              slidesToShow: 3
1727            }
1728          },
1729          {
1730            breakpoint: 768,
1731            settings: {
1732              slidesToShow: 1
1733            }
1734          }
1735        ]
1736      });
1737    });
1738
1739    /*$('#slide02').slick({
1740      autoplay: true,
1741      autoplaySpeed: 4000,
1742      slidesToShow: 3,
1743      pauseOnFocus: false,
1744      pauseOnHover: false,
1745      pauseOnDotsHover: false,
1746      arrows: false,
1747      centerMode: true,
1748      centerPadding: '15%',
1749      dots: true,
1750      responsive: [
1751        {
1752          breakpoint: 1025,
1753          settings: {
1754            slidesToShow: 3,
1755            centerPadding: '5%'
1756          }
1757        },
1758        {
1759          breakpoint: 768,
1760          settings: {
1761            slidesToShow: 1,
1762            centerPadding: '15%'
1763          }
1764        }
1765      ]
1766    });*/
1767
1768    $(window).on('load resize', function(){
1769      if(BPMin768.matches){
1770        $('#slide03.slick-initialized').slick('unslick');
1771      }else{
1772        $('#slide03').not('.slick-initialized').slick({
1773          autoplay: true,
1774          autoplaySpeed: 4000,
1775          slidesToShow: 1,
1776          pauseOnFocus: false,
1777          pauseOnHover: false,
1778          pauseOnDotsHover: false,
1779          arrows: false,
1780          dots: true
1781        });
1782      }
1783    });
1784  }
1785
1786
1787//newHotelsSlider
1788  if($('#newHotelsSlider').length){
1789    $('#newHotelsSlider').slick({
1790      autoplay: true,
1791      autoplaySpeed: 4000,
1792      slidesToShow: 3,
1793      pauseOnFocus: false,
1794      pauseOnHover: false,
1795      pauseOnDotsHover: false,
1796      appendArrows: $('.newHotelsSlideController'),
1797      prevArrow:'<li class="prev"></li>',
1798      nextArrow:'<li class="next"></li>',
1799      dots: false,
1800      responsive: [
1801        {
1802          breakpoint: 1025,
1803          settings: {
1804            slidesToShow: 2
1805          }
1806        },
1807        {
1808          breakpoint: 768,
1809          settings: {
1810            slidesToShow: 1
1811          }
1812        }
1813      ]
1814    });
1815  }
1816
1817
1818//neighborhoodSlider
1819  if($('#neighborhoodSlider').length){
1820    $(window).on('load resize', function(){
1821      if(BPMin768.matches){
1822        $('#neighborhoodSlider.slick-initialized').slick('unslick');
1823      }else{
1824        $('#neighborhoodSlider').not('.slick-initialized').slick({
1825          autoplay: true,
1826          autoplaySpeed: 4000,
1827          slidesToShow: 1,
1828          pauseOnFocus: false,
1829          pauseOnHover: false,
1830          pauseOnDotsHover: false,
1831          arrows: false,
1832          dots: true
1833        });
1834      }
1835    });
1836  }
1837
1838
1839//hotelsDetail spa slider
1840const othersSlider = $('main section.others .commonSlider01');
1841  if($('#hotelsDetail.spa').length){
1842    $(window).on('load resize', function(){
1843      if(BPMin768.matches){
1844        othersSlider.each(function(){
1845          $(this).find('.slider.slick-initialized').slick('unslick');
1846        });
1847      }else{
1848        othersSlider.each(function(){
1849          $(this).find('.slider').not('.slick-initialized').slick({
1850            autoplay: true,
1851            autoplaySpeed: 4000,
1852            slidesToShow: 1,
1853            pauseOnFocus: false,
1854            pauseOnHover: false,
1855            pauseOnDotsHover: false,
1856            arrows: false,
1857            dots: true
1858          });
1859        });
1860      }
1861    });
1862  }
1863
1864
1865//hotelsDetail breakfast slider
1866  if($('#hotelsDetail.breakfast').length){
1867    $('.pickupSlider .slider').slick({
1868      autoplay: true,
1869      autoplaySpeed: 4000,
1870      slidesToShow: 1,
1871      pauseOnFocus: false,
1872      pauseOnHover: false,
1873      pauseOnDotsHover: false,
1874      arrows: false,
1875      dots: true
1876    });
1877  }
1878
1879
1880//hotelsDetail floor slider
1881  if($('#hotelsDetail.floor').length){
1882    $('#slide01').slick({
1883      autoplay: true,
1884      autoplaySpeed: 4000,
1885      slidesToShow: 3,
1886      pauseOnFocus: false,
1887      pauseOnHover: false,
1888      pauseOnDotsHover: false,
1889      arrows: false,
1890      dots: true,
1891      responsive: [
1892        {
1893          breakpoint: 768,
1894          settings: {
1895            slidesToShow: 1
1896          }
1897        }
1898      ]
1899    });
1900  }
1901
1902
1903//hotelsDetail rooms
1904  if($('#hotelsDetail.rooms').length){
1905    $('#hotelsDetail.rooms section .commonSlider02').each(function(){
1906      const targetSlider = $(this).find('.slider');
1907      const thumbnails = targetSlider.next('.thumbnails');
1908      targetSlider.slick({
1909        autoplay: true,
1910        autoplaySpeed: 4000,
1911        slidesToShow: 1,
1912        pauseOnFocus: false,
1913        pauseOnHover: false,
1914        pauseOnDotsHover: false,
1915        arrows: false,
1916        dots: false,
1917        asNavFor: thumbnails
1918      });
1919      thumbnails.slick({
1920        slidesToShow: 4,
1921        pauseOnFocus: false,
1922        pauseOnHover: false,
1923        pauseOnDotsHover: false,
1924        arrows: true,
1925        dots: false,
1926        focusOnSelect: true,
1927        asNavFor: targetSlider
1928      });
1929    });
1930  }
1931
1932
1933//hotelsDetail access
1934  if($('#hotelsDetail.access').length){
1935    $('#hotelsDetail.access .sections .commonSlider01').each(function(){
1936      const targetSlider = $(this).find('.slider');
1937      targetSlider.slick({
1938        autoplay: true,
1939        autoplaySpeed: 4000,
1940        slidesToShow: 1,
1941        pauseOnFocus: false,
1942        pauseOnHover: false,
1943        pauseOnDotsHover: false,
1944        arrows: false,
1945        dots: true
1946      });
1947    });
1948  }
1949
1950
1951  //hotelsDetail top
1952  const appeals02 = $('#hotelsDetail.hotelsDetailTop section.appeals');
1953  appeals02.find('.inSections .thumbnails li').on('click', function(){
1954    const targetImages = $(this).parents('.textArea').next('.images').find('li');
1955    const targetImage = targetImages.eq($(this).index());
1956    if(targetImage.is(':visible')) return;
1957    targetImages.hide(), targetImage.fadeIn(300);
1958  });
1959
1960
1961//hotelsDetail gallery
1962  if ($('#hotelsDetail.gallery').length) {
1963    $('#hotelsDetail.gallery .variableContents .commonSlider02').each(function () {
1964      const targetSlider = $(this).find('.slider');
1965      const thumbnails = targetSlider.next('.thumbnails');
1966
1967      targetSlider.slick({
1968        autoplay: true,
1969        autoplaySpeed: 4000,
1970        slidesToShow: 1,
1971        pauseOnFocus: false,
1972        pauseOnHover: false,
1973        pauseOnDotsHover: false,
1974        arrows: false,
1975        dots: false,
1976        asNavFor: thumbnails
1977      });
1978
1979      thumbnails.slick({
1980        slidesToShow: 5,
1981        pauseOnFocus: false,
1982        pauseOnHover: false,
1983        pauseOnDotsHover: false,
1984        arrows: true,
1985        dots: false,
1986        focusOnSelect: true,
1987        asNavFor: targetSlider,
1988        responsive: [
1989          {
1990            breakpoint: 768,
1991            settings: {
1992              slidesToShow: 3
1993            }
1994          }
1995        ]
1996      });
1997    });
1998
1999    $(document).on('click', 'main .galleryItems li', function () {
2000      const $this = $(this);
2001      const parentItems = $this.parent('.galleryItems');
2002      const targetModal = parentItems.next('.modalArea');
2003      const index = $this.index();
2004
2005      $('main .modalArea').hide();
2006      targetModal.fadeIn(300);
2007
2008      const slider = targetModal.find('.slider');
2009      if (slider.length && slider.hasClass('slick-initialized')) {
2010        slider.slick('slickGoTo', index, true);
2011        slider.slick('setPosition');
2012        targetModal.find('.thumbnails').slick('setPosition');
2013      }
2014    });
2015
2016    $(document).on('click', 'main .modalArea .closeButton', function () {
2017      $(this).closest('.modalArea').fadeOut(300);
2018    });
2019
2020    $(window).on('load resize', function () {
2021      const modalArea = $('main .modalArea:visible');
2022      if (modalArea.length) {
2023        const wrapper = modalArea.find('.wrapper');
2024        const wrapperHeight = wrapper.outerHeight();
2025        if ($(window).height() - 40 <= wrapperHeight) {
2026          wrapper.addClass('fixedOnTop');
2027        } else {
2028          wrapper.removeClass('fixedOnTop');
2029        }
2030      }
2031    });
2032
2033    $(document).on('click', 'main .galleryItems li', function () {
2034      const modalArea = $('main .modalArea:visible');
2035      if (modalArea.length) {
2036        const wrapper = modalArea.find('.wrapper');
2037        const wrapperHeight = wrapper.outerHeight();
2038        if ($(window).height() - 40 <= wrapperHeight) {
2039          wrapper.addClass('fixedOnTop');
2040        }
2041      }
2042    });
2043  }
2044
2045
2046//hotelsDetail spa sectionTabs, images
2047  const spaInformation = $('#hotelsDetail.spa .spaInformation');
2048  const spaSectionTabs = spaInformation.find('.sectionTabs li');
2049  const spaVariableContents = spaInformation.find('.variableContents');
2050  spaSectionTabs.find('a').on('click', function(e){
2051    e.preventDefault();
2052    const tabIndex = $(this).parent('li').index();
2053    spaSectionTabs.removeClass('current');
2054    spaInformation.find('.sectionTabs').each(function(){
2055      $(this).find('li').eq(tabIndex).addClass('current');
2056    });
2057    spaVariableContents.hide(), spaVariableContents.eq($(this).parent('li').index()).fadeIn(300);
2058    othersSlider.hide(), othersSlider.eq(tabIndex).fadeIn(300), othersSlider.eq(tabIndex).find('.slider').slick('setPosition');
2059  });
2060
2061  spaVariableContents.find('.inSections .thumbnails li').on('click', function(){
2062    const targetImages = $(this).parents('.textArea').prev('.images').find('li');
2063    const targetImage = targetImages.eq($(this).index());
2064    if(targetImage.is(':visible')) return;
2065    targetImages.hide(), targetImage.fadeIn(300);
2066  });
2067
2068  if($('#hotelsDetail.spa').length){
2069    $(window).on('load resize', function(){
2070      let winW = $(window).width();
2071      let mensImgH = $('#js-mensInkoImg img').height();
2072
2073      if(winW > 767 && mensImgH > 180) {
2074        $('#js-mensInkoImg img, #js-womensInkoImg img').css({
2075          width:"auto",
2076          height:"180px"
2077        });
2078      } else if(winW > 767) {
2079        $('#js-mensInkoImg img, #js-womensInkoImg img').css({
2080          width:"130px",
2081          height:"auto"
2082        });
2083      } else {
2084        $('#js-mensInkoImg img, #js-womensInkoImg img').css({
2085          width:"100%",
2086          height:"auto"
2087        });
2088      }
2089    });
2090
2091    $('.pickupSlider .slider').slick({
2092      autoplay: true,
2093      autoplaySpeed: 4000,
2094      slidesToShow: 1,
2095      pauseOnFocus: false,
2096      pauseOnHover: false,
2097      pauseOnDotsHover: false,
2098      arrows: false,
2099      dots: true
2100    });
2101  }
2102
2103
2104//hotelsDetail commonInformationArea01 tabs
2105  const commonInformationArea01 = $('.commonInformationArea01');
2106  const informationTabs = commonInformationArea01.find('.informationTabs li');
2107  const informations = commonInformationArea01.find('.informations');
2108  informationTabs.on('click', function(){
2109    informationTabs.removeClass('current'), $(this).addClass('current');
2110    informations.hide(), informations.eq($(this).index()).fadeIn();;
2111  });
2112
2113
2114//hotelsDetail gallery tab
2115  $(document).on('click', '#hotelsDetail.gallery main .sectionTabs > li > a', function (e) {
2116    e.preventDefault();
2117    const $li = $(this).parent('li');
2118    const $tabs = $('#hotelsDetail.gallery main .sectionTabs > li');
2119    const $contents = $('#hotelsDetail.gallery main .variableContents');
2120
2121    $tabs.removeClass('current');
2122    $li.addClass('current');
2123    $contents.hide().eq($li.index()).fadeIn(300);
2124  });
2125
2126  $(document).on({
2127    mouseenter: function () {
2128      $(this).find('.dropDown').fadeIn(200);
2129    },
2130    mouseleave: function () {
2131      $(this).find('.dropDown').fadeOut(200);
2132    }
2133  }, '#hotelsDetail.gallery main .sectionTabs > li');
2134
2135
2136
2137//commonFaqList01 accordion
2138  $(document).on('click', 'main .commonFaqList01 dl', function() {
2139    if (!$(this).hasClass('open')) {
2140      $(this).addClass('open');
2141      $(this).find('dd').slideDown(200);
2142    } else {
2143      $(this).removeClass('open');
2144      $(this).find('dd').stop(true, true).slideUp(200);
2145    }
2146  });
2147
2148
2149//best conditionsArea accordion
2150  const conditionsTitle = $('#best main .conditionsTitle');
2151  const conditions = $('#best main .conditions');
2152  conditionsTitle.on('click', function(){
2153    if(!$(this).hasClass('open')){
2154      $(this).addClass('open'), conditions.slideDown(200);
2155    }else{
2156      $(this).removeClass('open'), conditions.stop(true, true).slideUp(200);
2157    }
2158  });
2159
2160
2161//dormyinn service
2162  if($('#service').length){
2163    $('.sections .commonSlider01').each(function(){
2164      const targetSlider = $(this).find('.slider');
2165      targetSlider.slick({
2166        autoplay: true,
2167        autoplaySpeed: 4000,
2168        slidesToShow: 3,
2169        pauseOnFocus: false,
2170        pauseOnHover: false,
2171        pauseOnDotsHover: false,
2172        arrows: false,
2173        dots: true,
2174        centerMode: true,
2175        centerPadding: 0,
2176        responsive: [
2177          {
2178            breakpoint: 768,
2179            settings: {
2180              slidesToShow: 1,
2181              centerMode: false
2182            }
2183          }
2184        ]
2185      });
2186    });
2187
2188
2189    $('.contentTabs li').on('click', function(){
2190      $('.contentTabs li').removeClass('current'), $(this).addClass('current');
2191      $('.variableContents').hide(), $('.variableContents').eq($(this).index()).fadeIn(300);;
2192    });
2193  }
2194
2195
2196//dormyinn rooms accordion
2197  if($('#infoRooms').length){
2198    const roomsAccordionTrigger = $('main .sections .listArea .accButton ');
2199    roomsAccordionTrigger.on('click', function(){
2200      const roomsAccordionTarget = $(this).next('ul');
2201      if(!$(this).hasClass('open')){
2202        $(this).addClass('open'), roomsAccordionTarget.fadeIn(200).css({display: 'flex'});
2203      }else{
2204        $(this).removeClass('open'), roomsAccordionTarget.fadeOut(200);
2205      }
2206    });
2207  }
2208
2209});
2210
2211
2212//adaptImage
2213let currentState;
2214const targetLength = $('img.adaptImage').length;
2215$(window).on('load resize', function(){
2216  if(currentState === undefined){currentState = BPMax767.matches ? true : false;}
2217  if(BPMax767.matches && currentState){
2218    $('img.adaptImage').each(function(index){
2219      const img = new Image();
2220      const targetImage = $(this);
2221      const resultSrc = $(this).attr('src').replace(/\/img\//, '/img/sp/');
2222      img.src = resultSrc;
2223      $(img).on('load', function(){
2224        targetImage.attr({src: resultSrc, width: img.width, height: img.height});
2225      });
2226      if(index == targetLength - 1){currentState = false;}
2227    });
2228  }else if(!BPMax767.matches && !currentState){
2229    $('img.adaptImage').each(function(index){
2230      const img = new Image();
2231      const targetImage = $(this);
2232      const resultSrc = $(this).attr('src').replace(/\/img\/sp\//, '/img/');
2233      img.src = resultSrc;
2234      $(img).on('load', function(){
2235        targetImage.attr({src: resultSrc, width: img.width, height: img.he
2235ight});
2236      });
2237      if(index == targetLength - 1){currentState = true;}
2238    });
2239  }
2240});
2241
2242//campaignModal
2243const campaignModalClose = document.querySelectorAll('.js-campaignModalClose, .js-campaignModalTextClose, .js-campaignModalBackOverlay');
2244campaignModalClose.forEach(function (element) {
2245	element.addEventListener('click', function () {
2246		const campaignflg = this.dataset.campaign;
2247		// if (campaignflg.includes("member")) {
2248    // if (campaignflg.includes("summerCampaign")) {
2249    // if (campaignflg.includes("winterCampaign")) {
2250    if (campaignflg.includes("grandThanksgivingCampaign")) {
2251		  // 現在のページパスを取得
2252		  let pagePath = window.location.pathname.replace(/\//g, '_'); // パスをCookie名に利用しやすい形式に変更
2253		      pagePath = pagePath.replace(/_$/, '');
2254		  // const cookieName = `campaign_member${pagePath}`;
2255      //const cookieName = `campaign_summer${pagePath}`;
2256      // const cookieName = `campaign_winter${pagePath}`;
2257      const cookieName = `campaign_grandThanksgiving${pagePath}`;
2258
2259		  // Cookieにデータを保存 (1年後まで有効)
2260		  setCookie(cookieName, 'true', 365);
2261
2262		  campaignModalHide(campaignflg);
2263		}
2264	});
2265});
2266
2267if (campaignModalClose.length > 0) {
2268	setTimeout(() => {
2269		// 現在のページパスを取得してCookie名に利用
2270		let pagePath = window.location.pathname.replace(/\//g, '_');
2271		pagePath = pagePath.replace(/_$/, '');
2272		//const cookieName = `campaign_member${pagePath}`;
2273		//const cookieName = `campaign_summer${pagePath}`;
2274		//const cookieName = `campaign_winter${pagePath}`;
2275    const cookieName = `campaign_grandThanksgiving${pagePath}`;
2276
2277		// Cookieにデータを保存(有効期限1年)
2278		//setCookie(cookieName, 'true', 365);
2279
2280		// モーダルを非表示にする
2281		if (document.querySelector('.campaignModalWrap')) {
2282			//campaignModalHide('member');
2283			//campaignModalHide('summerCampaign');
2284			//campaignModalHide('winterCampaign');
2285      campaignModalHide('grandThanksgivingCampaign');
2286		}
2287	}, 5000);
2288}
2289
2290// モーダルを非表示にする関数
2291function campaignModalHide(campaign) {
2292	document.getElementById('js-campaignModal--' + campaign).style.display = "none";
2293	document.getElementById('js-campaignModalBackOverlay--' + campaign).style.display = "none";
2294}
2295
2296//bestrateModal
2297const bestrateModalBtnOpen = $('.js-bestrateModalBtnOpen');
2298const bestrateModal = $('#js-bestrateModal');
2299const bestrateModalBackOverlay = $('#js-bestrateModalBackOverlay');
2300const bestrateModalClose = $('#js-bestrateModalClose');
2301bestrateModalBtnOpen.on('click', function(){
2302  bestrateModal.show();
2303  bestrateModalBackOverlay.show();
2304});
2305bestrateModalClose.on('click', function(){
2306  bestrateModal.hide();
2307  bestrateModalBackOverlay.hide();
2308});
2309
2310// 動画プレイヤー管理
2311let youtubePlayers = {};
2312
2313window.addEventListener('DOMContentLoaded', function () {
2314  const youtubeIframes = document.querySelectorAll('iframe[id^="nono_top_movie"], iframe[id^="resortHotelsMovie"]');
2315
2316  // YouTube API 読み込み
2317  if (youtubeIframes.length) {
2318    const tag = document.createElement('script');
2319    tag.src = "https://www.youtube.com/iframe_api";
2320    const firstScriptTag = document.getElementsByTagName('script')[0];
2321    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
2322  }
2323}, false);
2324
2325// YouTube IFrame API 初期化
2326function onYouTubeIframeAPIReady() {
2327  const youtubeIframes = document.querySelectorAll('iframe[id^="nono_top_movie"], iframe[id^="resortHotelsMovie"]');
2328  youtubeIframes.forEach(iframe => {
2329    const id = iframe.id;
2330    youtubePlayers[id] = new YT.Player(id, {
2331      events: {
2332        'onReady': onPlayerReady
2333      }
2334    });
2335  });
2336}
2337
2338// プレーヤー準備完了時の処理
2339function onPlayerReady(event) {
2340  checkVideoVisibility(event.target);
2341  window.addEventListener('scroll', () => checkVideoVisibility(event.target));
2342}
2343
2344// 動画表示判定と再生/停止制御
2345function checkVideoVisibility(player) {
2346  const iframe = player.getIframe();
2347  const bounding = iframe.getBoundingClientRect();
2348
2349  // 親要素の表示状態を確認
2350  const parentArea = iframe.closest('.hotelTopMovieArea, .resortHotelsMovieArea');
2351  const isActive = parentArea && parentArea.classList.contains('active');
2352
2353  // ビューポート内にあるか確認
2354  const isVisible = bounding.top >= 0 && bounding.bottom <= window.innerHeight;
2355
2356  if (isVisible && isActive) {
2357    player.mute();
2358    player.playVideo();
2359  } else {
2360    player.pauseVideo();
2361  }
2362}
2363
2364// タブクリックイベントの登録
2365const tabSelectors = ['.js-hotelTopMoviTabList', '.js-resortHotelsMovieTab'];
2366
2367tabSelectors.forEach(selector => {
2368  const tabList = document.querySelectorAll(selector);
2369
2370  tabList.forEach(tab => {
2371    tab.addEventListener('click', function () {
2372      // すべてのタブとエリアのアクティブ状態を解除
2373      tabSelectors.forEach(sel => {
2374        document.querySelectorAll(sel).forEach(tab => tab.classList.remove('active'));
2375      });
2376      document.querySelectorAll('.hotelTopMovieArea, .resortHotelsMovieArea').forEach(area => area.classList.remove('active'));
2377
2378      // クリックされたタブと対応するエリアをアクティブ化
2379      this.classList.add('active');
2380      const movieId = this.dataset.movieid;
2381      const targetAreaId = `#js-hotelTopMovieArea--${movieId}, #js-resortHotelsMovieArea--${movieId}`;
2382      const targetArea = document.querySelector(targetAreaId);
2383
2384      if (targetArea) {
2385        targetArea.classList.add('active');
2386      }
2387
2388      // すべてのプレーヤーの再生/停止制御
2389      Object.keys(youtubePlayers).forEach(playerId => {
2390        const player = youtubePlayers[playerId];
2391
2392        // 選択されたプレーヤーを再生、その他を停止
2393        if (playerId === `nono_top_movie--${movieId}` || playerId === `resortHotelsMovie--${movieId}`) {
2394          checkVideoVisibility(player);
2395        } else {
2396          player.pauseVideo();
2397        }
2398      });
2399    });
2400  });
2401});
2402
2403//  ホテル一覧 新規オープン・リニューアル日より1年経過すると自動で削除
2404// 現在の日付を取得
2405const currentDate = new Date();
2406
2407// 日本時間をISO 8601形式で取得する関数
2408function getJapanISODate(date) {
2409  return new Date(date.toLocaleString('en-US', { timeZone: 'Asia/Tokyo' })).toISOString();
2410}
2411
2412// アイテムを持つ要素を取得
2413const hotelItems = document.querySelectorAll('.js-newHoteItem');
2414
2415// 各要素の日付をチェック
2416hotelItems.forEach(item => {
2417  const dateElement = item.querySelector('.js-newHoteDate');
2418
2419  if (dateElement) {
2420    // 日付を取得してDateオブジェクトに変換
2421    const dateText = dateElement.textContent.trim();
2422    const itemDate = new Date(dateText.replace(/\./g, '-'));
2423
2424    // 1年以上前かどうかをチェック
2425    const oneYearAgo = new Date(getJapanISODate(currentDate));
2426    oneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1);
2427
2428    if (itemDate < oneYearAgo) {
2429      // 削除対象のホテル名を取得
2430      const hotelNameElement = item.querySelector('.js-listHotelName');
2431      if (hotelNameElement) {
2432        const hotelName = hotelNameElement.textContent.trim();
2433
2434        // 同じホテル名の .js-listHoteDateArea を削除
2435        document.querySelectorAll('.commonItems10 .category01').forEach(categoryItem => {
2436          const categoryHotelName = categoryItem.querySelector('.js-listHotelName');
2437          if (categoryHotelName && categoryHotelName.textContent.trim() === hotelName) {
2438            // `js-listHoteDateArea` を削除
2439            const dateArea = categoryItem.querySelector('.js-listHoteDateArea');
2440            if (dateArea) {
2441              dateArea.remove();
2442            }
2443
2444            // `js-listHoteDateInner` から `listHoteDateInner` クラスを削除
2445            const dateInner = categoryItem.querySelector('.js-listHoteDateInner');
2446            if (dateInner) {
2447              dateInner.classList.remove('listHoteDateInner');
2448            }
2449          }
2450        });
2451      }
2452
2453      // `js-newHoteItem` 自体を削除
2454      item.remove();
2455    }
2456  }
2457});
2458
2459
2460// hotelSearchFormFixing:総合TOPで下部の検索ガジェット(fixingInputArea)を併用する場合のフォーム
2461['hotelSearchForm', 'hotelSearchFormFixing'].forEach(function (formId) {
2462const form = document.getElementById(formId);
2463if (form) {
2464  form.addEventListener('submit', function (e) {
2465    e.preventDefault();
2466
2467  const params = new URLSearchParams();
2468
2469  this.querySelectorAll('input[name], select[name]').forEach(el => {
2470    const name = el.name;
2471    const value = el.value;
2472
2473    if (
2474      name === 'number_of_adults' ||
2475      name === 'number_of_children_need_futons' ||
2476      name === 'number_of_children_no_need_futons'
2477    ) {
2478      return;
2479    }
2480
2481    if (value !== '') {
2482      params.append(name, value);
2483    }
2484  });
2485
2486  const roomGroups = this.querySelectorAll('.room-group');
2487
2488  params.set('number_of_rooms', roomGroups.length);
2489
2490  roomGroups.forEach(room => {
2491    room.querySelectorAll('.numberSelect').forEach(select => {
2492      const name = select.dataset.inputName;
2493      const value = select.querySelector('.number').textContent.trim();
2494
2495      switch (name) {
2496        case 'number_of_adults':
2497          params.append('number_of_adults[]', value);
2498          break;
2499
2500        case 'number_of_children_need_futons':
2501          params.append('number_of_children_need_futons[]', value);
2502          break;
2503
2504        case 'number_of_children_no_need_futons':
2505          params.append('number_of_children_no_need_futons[]', value);
2506          break;
2507      }
2508    });
2509  });
2510  
2511  params.set('stock_check', 'true');
2512
2513    const searchByTag = params.get('search_by_tag');
2514    const origin = window.location.origin;
2515
2516    const destination =
2517      searchByTag === 'plan'
2518        ? `${origin}/reserve/search-plan`
2519        : `${origin}/reserve`;
2520
2521    location.href = `${destination}?${params.toString()}`;
2522  });
2523};
2524});
2525
2526// floatingBanner(追従バナー)クローズ処理
2527(function() {
2528  const floatingBanner = document.getElementById('js-floatingBanner');
2529  const floatingBannerClose = document.getElementById('js-floatingBannerClose');
2530
2531  if (floatingBannerClose && floatingBanner) {
2532    floatingBannerClose.addEventListener('click', function() {
2533      floatingBanner.style.display = 'none';
2534    });
2535  }
2536})();

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.