1/** 2 * 3 * @author abilive 4 * @file yprox_searchForm.js 5 * @version 1.0.1 6 * @requires dayjs-1.11.7 (MIT License) 7 * @requires flatpickr-4.6.9 (MIT License) 8 * 9 * @hitory 10 * 2023.12.07 ä¸é¨android端æ«ã«ã¦ã«ã¬ã³ãã¼ã表示ãããªãä¸å ·åãä¿®æ£ 11 * 2023.12.25 ãã§ãã¯ã¤ã³æ¥ã ãã鏿ãã¦æ¤ç´¢ãããå ´åã«ãæ³æ°åæå¤ã§æ¤ç´¢ãããããã«ä¿®æ£ 12 * 2023.12.25 ãã§ãã¯ã¤ã³æ¥ãæå®ããæã«ããã§ãã¯ã¢ã¦ãæ¥ã鏿ãããããªæ¡å æã追å 13 * 14 */ 15 16// ãªãµã¤ãºç¨ã®ã¿ã¤ãã¼å¤æ° 17let yprox_wr_queue = null; 18let yprox_wr_currentWidth = window.innerWidth; 19let yprox_wr_currentHeight = window.innerHeight; 20// ãã§ãã¯ã¢ã¦ãæ¥ã®æ¡å æç¨ã®å¤æ° 21let textCheckInnOut = ''; 22let flagCalendarHideCheckOutText = false; 23 24/** 25 * DOMContentLoaded 26 */ 27document.addEventListener('DOMContentLoaded', function () { 28 const nInitDay = 0; // æ¥ä»(âæ¥å¾) â»æ¬æ¥ã®å ´å㯠0 //â»20240507ãã¤ã¬ãã¯ã¹ã«ã¦ä¿®æ£ 29 const nInitPer = 4;
29 // äººæ° //â»20240507ãã¤ã¬ãã¯ã¹ã«ã¦ä¿®æ£ 30 const nInitStay = 1; // æ³æ° 31 const nInitRoom = 1; // é¨å±æ° 32 33 const nOpMaxYear = 2; // æ¥ä»(ä»å¹´ãå«ãã¦ä½å¹´å表示ããã) 34 const nOpMaxPer = 20; // 人æ°(æå¤§é¸æå¤) //â»20240507ãã¤ã¬ãã¯ã¹ã«ã¦ä¿®æ£ 35 const nOpMaxNights = 10; // æ³æ°(æå¤§é¸æå¤) 36 const nOpMaxRoom = 20; // é¨å±æ°(æå¤§é¸æå¤) 37 38 let flagNoDate = false; // åæè¡¨ç¤ºæ¥ä»(æ¥ä»ãªã)ã®å ´å㯠true ãformã¿ã°ã¸ data-no-date ãä»ä¸ã§æ¥ä»ãªã 39 40 let flagCalendar = true; // ã«ã¬ã³ãã¼ã表示ããå ´å㯠true ãformã¿ã°ã¸ data-calendar ãä»ä¸ã§ã«ã¬ã³ãã¼è¡¨ç¤º //â»20240507ãã¤ã¬ãã¯ã¹ã«ã¦ä¿®æ£ 41 flagCalendarHideCheckOutText = false; // ãã§ãã¯ã¢ã¦ãæ¥ã鏿ãããããªæ¡å æãé表示ã«ããå ´å㯠true ãformã¿ã°ã¸ data-hide-checkout-text ãä»ä¸ã§é表示 42 43 const windowMobileWidth = 767; //ã¢ãã¤ã«ã®ç»é¢å¹ 44 45 const nInitCalendar = 2; //ã«ã¬ã³ãã¼ã®æã®è¡¨ç¤ºæ° 46 const nInitCalendarMobile = 1; //windowMobileWidth以ä¸ã®ç»é¢å¹ ã§ã®ã«ã¬ã³ãã¼ã®æã®è¡¨ç¤ºæ° 47 48 const calendarSpanStr = ' - '; //ã«ã¬ã³ãã¼ã®æ¥ä»ã®éã«å ¥ããæå åæè¡¨ç¤ºã«ãããå ´å㯠null 49 50 const wr_wait = 600; // ãªãµã¤ãºã¤ãã³ãçºçæã®å¾ ã¡æé 51 // ãã§ãã¯ã¢ã¦ãæ¥ãæå®ããæã«ããã§ãã¯ã¢ã¦ãæ¥ã鏿ãããããªæ¡å æ 52 const textCheckInnOutJP = `ç¶ãã¦ãã§ãã¯ã¢ã¦ãæ¥ã<br>鏿ãã¦ãã ãã`; 53 const textCheckInnOutEN = `Please select your check-out date`; 54 const textCheckInnOutKR = `ì²´í¬ìì ë ì§ë¥¼<br>ì íí´ ì£¼ì¸ì`; 55 const textCheckInnOutCN = `è«é¸æéæ¿æ¥æ`; 56 const textCheckInnOutTW = `è«é¸æéæ¿æ¥æ`; 57 textCheckInnOut = textCheckInnOutEN; 58 59 /** 60 * æ¥ä»è¨ç®ç¨ã®scriptã®ãã¹ 61 * CDNãã叿ã®å ´åã¯ä»¥ä¸ã®ãã¹ããå©ç¨ãã ãã 62 * https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js 63 */ 64 const dayjsPath = '/js/dayjs.min.js'; //æ¥ä»è¨ç®ç¨ã®scriptã®ãã¹ â»20240507ãã¤ã¬ãã¯ã¹ã«ã¦ä¿®æ£ 65 /** 66 * ã«ã¬ã³ãã¼ç¨cssã®ãã¹ 67 * CDNãã叿ã®å ´åã¯ä»¥ä¸ã®ãã¹ããå©ç¨ãã ãã 68 * https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css 69 */ 70 const calendarCss = '/css/flatpickr.min.css'; //â»20240507ãã¤ã¬ãã¯ã¹ã«ã¦ä¿®æ£ 71 /** 72 * ã«ã¬ã³ãã¼ç¨jsã®ãã¹ 73 * CDNãã叿ã®å ´åã¯ä»¥ä¸ã®ãã¹ããå©ç¨ãã ãã 74 * https://cdn.jsdelivr.net/npm/flatpickr 75 */ 76 const calendarJs = '/js/flatpickr.js'; //â»20240507ãã¤ã¬ãã¯ã¹ã«ã¦ä¿®æ£ 77 /** 78 * ã«ã¬ã³ãã¼ç¨ã®è¨èªãã¡ã¤ã«ã®ãã¹ 79 * CDNãã叿ã®å ´åã¯ä»¥ä¸ã®ãã¹ããå©ç¨ãã ãã 80 * â»ãã©ã¦ã¶ã®è¨èªè¨å®ã«ãã£ã¦è¡¨ç¤ºãããè¨èªãå¤ããã¾ã 81 * https://cdn.jsdelivr.net/npm/flatpickr/dist/l10n/ja.js 82 * https://cdn.jsdelivr.net/npm/flatpickr/dist/l10n/ko.js 83 * https://cdn.jsdelivr.net/npm/flatpickr/dist/l10n/zh.js 84 * https://cdn.jsdelivr.net/npm/flatpickr/dist/l10n/zh-tw.js 85 */ 86 const calendarLangJa = '/js/l10n/ja.js'; //ã«ã¬ã³ãã¼ç¨ã®è¨èªãã¡ã¤ã«ã®ãã¹ //â»20240507ãã¤ã¬ãã¯ã¹ã«ã¦ä¿®æ£ 87 const calendarLangKo = '/js/l10n/ko.js'; //éå½èª //â»20240507ãã¤ã¬ãã¯ã¹ã«ã¦ä¿®æ£ 88 const calendarLangZh = '/js/l10n/zh.js'; //ä¸å½èª(ç°¡ä½å) //â»20240507ãã¤ã¬ãã¯ã¹ã«ã¦ä¿®æ£ 89 const calendarLangZh_TW = '/js/l10n/zh-tw.js'; //ä¸å½èª(ç¹ä½å) //â»20240507ãã¤ã¬ãã¯ã¹ã«ã¦ä¿®æ£ 90 91 const dayjsJa = '/js/locale/ja.js'; //ã«ã¬ã³ãã¼ç¨ã®è¨èªãã¡ã¤ã«ã®ãã¹ //â»20240507ãã¤ã¬ãã¯ã¹ã«ã¦ä¿®æ£ 92 const dayjsKo = '/js/locale/ko.js'; //éå½èª //â»20240507ãã¤ã¬ãã¯ã¹ã«ã¦ä¿®æ£ 93 const dayjsZh = '/js/locale/zh-cn.js'; //ä¸å½èª(ç°¡ä½å) //â»20240507ãã¤ã¬ãã¯ã¹ã«ã¦ä¿®æ£ 94 const dayjsTW = '/js/locale/zh-tw.js'; //ä¸å½èª(ç¹ä½å) //â»20240507ãã¤ã¬ãã¯ã¹ã«ã¦ä¿®æ£ 95 96 //æ¥ä»è¨ç®ç¨ã®scriptãèªã¿è¾¼ã 97 const scriptDayjs = document.createElement('script'); //scriptè¦ç´ ã使 98 document.head.appendChild(scriptDayjs); //headè¦ç´ ã«scriptè¦ç´ ã追å 99 //æ¥ä»è¨ç®ç¨ã®scriptã®èªã¿è¾¼ã¿å®äº 100 scriptDayjs.onload = function () { 101 //ã«ã¬ã³ãã¼ã表示ãæå¹ã«è¨å®ãã¦ããã°scriptãèªã¿è¾¼ã 102 const Body = document.body; // body 103 const searchForm = Body.querySelectorAll('.js-yprox-searchForm'); // search form 104 const lenSearchForm = searchForm.length; // formã®æ° 105 // formã®æ°ã ãã«ã¼ã 106 for (let i = 0; i < lenSearchForm; i++) { 107 const form = searchForm[i]; // form 108 if (!flagCalendar) { 109 flagCalendar = form.getAttribute('data-calendar') === '' ? true : false; //ã«ã¬ã³ãã¼ã表示ãããã©ãã 110 flagCalendarHideCheckOutText = form.getAttribute('data-hide-checkout-text') === '' ? true : false; //ã«ã¬ã³ãã¼ã表示ãããã©ãã 111 } 112 } 113 //ã«ã¬ã³ãã¼ã表示ããå ´åã¯scriptãèªã¿è¾¼ã 114 if (flagCalendar) { 115 //cssãèªã¿è¾¼ã 116 const link = document.createElement('link'); //linkè¦ç´ ã使 117 link.rel = 'stylesheet'; //rel屿§ãstylesheetã« 118 document.head.appendChild(link); //headè¦ç´ ã«linkè¦ç´ ã追å 119 //cssã®èªã¿è¾¼ã¿ãå®äºãããscriptãèªã¿è¾¼ã 120 link.onload = function () { 121 //scriptãèªã¿è¾¼ã 122 let userLanguage = navigator.language; //è¨èªãåå¾ 123 if (String(userLanguage).indexOf('ja') != -1 || String(userLanguage).indexOf('ja-JP') != -1 || String(userLanguage).indexOf('zh-CN') != -1 || String(userLanguage).indexOf('ko') != -1 || String(userLanguage).indexOf('ko-KR') != -1 || String(userLanguage).indexOf('zh-TW') != -1) { 124 //è±èªä»¥å¤ã®å ´å 125 const script = document.createElement('script'); //scriptè¦ç´ ã使 126 const scriptDayjs = document.createElement('script'); //scriptè¦ç´ ã使 127 document.head.appendChild(script); //headè¦ç´ ã«scriptè¦ç´ ã追å 128 document.head.appendChild(scriptDayjs); 129 //è¨èªãã¡ã¤ã«ã®èªã¿è¾¼ã¿å®äº 130 script.onload = function () { 131 const script2 = document.createElement('script'); //scriptè¦ç´ ã使 132 document.head.appendChild(script2); //headè¦ç´ ã«scriptè¦ç´ ã追å 133 //ã«ã¬ã³ãã¼ã®èªã¿è¾¼ã¿å®äº 134 script2.onload = function () {
135 yproxSearchFormInit(nInitDay, nInitPer, nInitStay, nInitRoom, nOpMaxYear, nOpMaxPer, nOpMaxNights, nOpMaxRoom, flagNoDate, flagCalendar, nInitCalendar, calendarSpanStr, windowMobileWidth, wr_wait, nInitCalendarMobile); 136 }; 137 script2.src = calendarJs; //src屿§ã«jsã®ãã¹ãæå® 138 } 139 switch (userLanguage) { 140 case 'ja': 141 //æ¥æ¬èª 142 script.src = calendarLangJa; //src屿§ã«jsã®ãã¹ãæå® 143 scriptDayjs.src = dayjsJa; //src屿§ã«jsã®ãã¹ãæå® 144 textCheckInnOut = textCheckInnOutJP; 145 break; 146 case 'ja-JP': 147 //æ¥æ¬èª 148 script.src = calendarLangJa; //src屿§ã«jsã®ãã¹ãæå® 149 scriptDayjs.src = dayjsJa; //src屿§ã«jsã®ãã¹ãæå® 150 textCheckInnOut = textCheckInnOutJP; 151 break; 152 case 'ko': 153 //éå½èª 154 script.src = calendarLangKo; //src屿§ã«jsã®ãã¹ãæå® 155 scriptDayjs.src = dayjsKo; //src屿§ã«jsã®ãã¹ãæå® 156 textCheckInnOut = textCheckInnOutKR; 157 break; 158 case 'ko-KR': 159 //éå½èª 160 script.src = calendarLangKo; //src屿§ã«jsã®ãã¹ãæå® 161 scriptDayjs.src = dayjsKo; //src屿§ã«jsã®ãã¹ãæå® 162 textCheckInnOut = textCheckInnOutKR; 163 break; 164 case 'zh-CN': 165 //ä¸å½èª(ç°¡ä½å) 166 script.src = calendarLangZh; //src屿§ã«jsã®ãã¹ãæå® 167 scriptDayjs.src = dayjsZh; //src屿§ã«jsã®ãã¹ãæå® 168 textCheckInnOut = textCheckInnOutCN; 169 break; 170 case 'zh-TW': 171 //ä¸å½èª(ç¹ä½å) 172 script.src = calendarLangZh_TW; //src屿§ã«jsã®ãã¹ãæå® 173 scriptDayjs.src = dayjsTW; //src屿§ã«jsã®ãã¹ãæå® 174 textCheckInnOut = textCheckInnOutTW; 175 break; 176 default: 177 //è±èª 178 textCheckInnOut = textCheckInnOutEN; 179 break; 180 } 181 } else { 182 //è±èªã®å ´åã¯è¨èªãã¡ã¤ã«ã¯èªã¿è¾¼ã¾ãªã 183 const script2 = document.createElement('script'); //scriptè¦ç´ ã使 184 document.head.appendChild(script2); //headè¦ç´ ã«scriptè¦ç´ ã追å 185 //ã«ã¬ã³ãã¼ã®èªã¿è¾¼ã¿å®äº 186 script2.onload = function () { 187 yproxSearchFormInit(nInitDay, nInitPer, nInitStay, nInitRoom, nOpMaxYear, nOpMaxPer, nOpMaxNights, nOpMaxRoom, flagNoDate, flagCalendar, nInitCalendar, calendarSpanStr, windowMobileWidth, wr_wait, nInitCalendarMobile); 188 }; 189 script2.src = calendarJs; //src屿§ã«jsã®ãã¹ãæå® 190 } 191 }; 192 link.href = calendarCss; //href屿§ã«cssã®ãã¹ãæå® 193 } else { 194 //ã«ã¬ã³ãã¼ã表示ããªãå ´åã¯ãã®ã¾ã¾æ¤ç´¢ãã©ã¼ã ã®åæå 195 yproxSearchFormInit(nInitDay, nInitPer, nInitStay, nInitRoom, nOpMaxYear, nOpMaxPer, nOpMaxNights, nOpMaxRoom, flagNoDate, flagCalendar, nInitCalendar, calendarSpanStr, windowMobileWidth, wr_wait, nInitCalendarMobile); 196 } 197 }; 198 scriptDayjs.src = dayjsPath; //src屿§ã«jsã®ãã¹ãæå® 199}); 200 201/** 202 * functions 203 */ 204 205/** 206 * æ¤ç´¢ãã©ã¼ã ã®åæå 207 * @param nInitDay - æ¥ä»(âæ¥å¾) â»æ¬æ¥ã®å ´å㯠0 208 * @param nInitPer - äººæ° 209 * @param nInitStay - æ³æ° 210 * @param nInitRoom - é¨å±æ° 211 * @param nOpMaxYear - æ¥ä»(ä»å¹´ãå«ãã¦ä½å¹´å表示ããã) 212 * @param nOpMaxPer - 人æ°(æå¤§é¸æå¤) 213 * @param nOpMaxNights - æ³æ°(æå¤§é¸æå¤) 214 * @param nOpMaxRoom - é¨å±æ°(æå¤§é¸æå¤) 215 * @param flagNoDate - æ¥ä»(æ¥ä»ãªã)ã®æç¡ 216 * @param flagCalendar - ã«ã¬ã³ãã¼ã表示ãããã©ãã 217 * @param nInitCalendar - ã«ã¬ã³ãã¼ã®æã®è¡¨ç¤ºæ° 218 * @param calendarSpanStr - ã«ã¬ã³ãã¼ã®æ¥ä»ã®éã«å ¥ããæå 219 * @param windowMobileWidth - ã¦ã£ã³ãã¦ãµã¤ãº(ã¢ãã¤ã«) 220 * @param wr_wait - ãªãµã¤ãºã¤ãã³ãçºçæã®å¾ ã¡æé 221 */
222function yproxSearchFormInit(nInitDay, nInitPer, nInitStay, nInitRoom, nOpMaxYear, nOpMaxPer, nOpMaxNights, nOpMaxRoom, flagNoDate, flagCalendar, nInitCalendar, calendarSpanStr, windowMobileWidth, wr_wait, nInitCalendarMobile) { 223 const Body = document.body; // body 224 const searchForm = Body.querySelectorAll('.js-yprox-searchForm'); // search form 225 const lenSearchForm = searchForm.length; // formã®æ° 226 const userLanguage = navigator.language; //è¨èªãåå¾ 227 let strPersons = ''; // 人æ°ã®åä½ 228 let strNights = ''; // æ³æ°ã®åä½ 229 let strRooms = ''; // é¨å±æ°ã®åä½ 230 let calendarLocale = null; // ã«ã¬ã³ãã¼ã®è¨èª 231 const rangeSeparators = ['ãã', 'to', 'è³', '~']; // ã«ã¬ã³ãã¼ã®æ¥ä»ã®éã«å ¥ããæå 232 const yproXClendars = []; 233 if (String(userLanguage).indexOf('ja') != -1 || String(userLanguage).indexOf('ja-JP') != -1 || String(userLanguage).indexOf('zh-CN') != -1 || String(userLanguage).indexOf('ko') != -1 || String(userLanguage).indexOf('ko-KR') != -1 || String(userLanguage).indexOf('zh-TW') != -1) { 234 // è¨èªãè±èªä»¥å¤ã®å ´å 235 switch (userLanguage) { 236 case 'ja': 237 // æ¥æ¬èªã®å ´å 238 if (flagCalendar) { 239 calendarLocale = ja.Japanese; 240 } 241 strPersons = 'å'; 242 strNights = 'æ³'; 243 strRooms = 'é¨å±'; 244 dayjs.locale('ja'); //æ¥æ¬èªã«è¨å® 245 break; 246 case 'ja-JP': 247 // æ¥æ¬èªã®å ´å 248 if (flagCalendar) { 249 calendarLocale = ja.Japanese; 250 } 251 strPersons = 'å'; 252 strNights = 'æ³'; 253 strRooms = 'é¨å±'; 254 dayjs.locale('ja'); //æ¥æ¬èªã«è¨å® 255 break; 256 case 'ko': 257 // éå½èªã®å ´å 258 if (flagCalendar) { 259 calendarLocale = ko.Korean; 260 } 261 strPersons = 'ëª '; 262 strNights = 'ë°'; 263 strRooms = 'ë°©'; 264 dayjs.locale('ko'); //æ¥æ¬èªã«è¨å® 265 break; 266 case 'ko-KR': 267 // éå½èªã®å ´å 268 if (flagCalendar) { 269 calendarLocale = ko.Korean; 270 } 271 strPersons = 'ëª '; 272 strNights = 'ë°'; 273 strRooms = 'ë°©'; 274 dayjs.locale('ko'); //æ¥æ¬èªã«è¨å® 275 break; 276 case 'zh-CN': 277 // ç°¡ä½åä¸å½èªã®å ´å 278 if (flagCalendar) { 279 calendarLocale = zh.Mandarin; 280 } 281 strPersons = 'å'; 282 strNights = 'æ'; 283 strRooms = 'é´'; 284 dayjs.locale('zh-cn'); //æ¥æ¬èªã«è¨å® 285 break; 286 case 'zh-TW': 287 // ç¹ä½åä¸å½èªã®å ´å 288 if (flagCalendar) { 289 calendarLocale = window['zh-tw'].MandarinTraditional; 290 } 291 strPersons = 'å'; 292 strNights = 'æ'; 293 strRooms = 'é'; 294 dayjs.locale('zh-tw'); //æ¥æ¬èªã«è¨å® 295 break; 296 default: 297 dayjs.locale('en'); //è±èªã«è¨å® 298 break; 299 } 300 } else { 301 // è¨èªãè±èªã®å ´å 302 strPersons = 'guests'; 303 strNights = 'nights'; 304 strRooms = 'room'; 305 } 306 // formã®æ°ã ãã«ã¼ã 307 for (let i = 0; i < lenSearchForm; i++) { 308 const form = searchForm[i]; // form 309 flagCalendar = form.getAttribute('data-calendar') === '' ? true : false; //ã«ã¬ã³ãã¼ã表示ãããã©ãã 310 flagNoDate = form.getAttribute('data-no-date') === '' ? true : false; //æ¥ä»ãªãã表示ãããã©ãã 311 // æ¥ä»ã®åæå¤ãè¨å® 312 const d = dayjs().add(nInitDay, 'day'); // dayjs object 313 let nYear = d.year(); // å¹´ 314 let nMonth = d.month() + 1; // æ 315 let nDay = d.date(); // æ¥ 316 const formWrpCheckInn = form.querySelector('.js-yprox-searchForm__wrpCheckInn'); // æ¥ä»ã®ã©ããã¼ 317 const formCheckInn = form.querySelector('.js-yprox-searchForm__checkin'); //æ¥ä» 318 const formBoxCheckInnDay = form.querySelector('.js-yprox-searchForm__boxCheckin-day'); // æ¥ä»(æ¥)ã®ã©ããã¼ 319 const formCheckInnDay = form.querySelector('.js-yprox-searchForm__checkin-day'); // æ¥ä»(æ¥) 320 const formBoxCheckInnMonth = form.querySelector('.js-yprox-searchForm__boxCheckin-month'); // æ¥ä»(æ)ã®ã©ããã¼ 321 const formCheckInnMonth = form.querySelector('.js-yprox-searchForm__checkin-month'); // æ¥ä»(æ) 322 const formBoxCheckInnYear = form.querySelector('.js-yprox-searchForm__boxCheckin-year'); // æ¥ä»(å¹´) 323 const formCheckInnYear = form.querySelector('.js-yprox-searchForm__checkin-year');// æ¥ä»(å¹´) 324 const formNoDate = form.querySelector('.js-yprox-searchForm__noDate'); // æ¥ä»(æ¥ä»ãªã) 325 const formCheckInnOut = form.querySelector('.js-yprox-searchForm__checkInnOut'); // ã«ã¬ã³ãã¼ 326 // äººæ° 327 const formAdults = form.querySelector('.js-yprox-searchForm__adults'); 328 const formWrpAdults = form.querySelector('.js-yprox-searchForm__wrpAdults'); 329 //nOpMaxPerã®æ°ã ãoptionã追å 330 if (formAdults) { 331 for (let j = 1; j <= nOpMaxPer; j++) { 332 const Option = document.createElement('option'); 333 Option.value = j; 334 Option.textContent = j + strPersons; 335 formAdults.appendChild(Option); 336 if (j === nInitPer) { 337 Option.setAttribute('selected', 'selected'); 338 } 339 } 340 } 341 // æ³æ° 342 const formNights = form.querySelector('.js-yprox-searchForm__nights'); 343 const formWrpNights = form.querySelector('.js-yprox-searchForm__wrpNights'); 344 //nOpMaxNightsã®æ°ã ãoptionã追å 345 if (formNights) { 346 for (let j = 1; j <= nOpMaxNights; j++) { 347 const Option = document.createElement('option'); 348 Option.value = j; 349 Option.textContent = j + strNights; 350 formNights.appendChild(Option); 351 if (j === nInitStay) { 352 Option.setAttribute('selected', 'selected'); 353 } 354 } 355 } 356 // é¨å±æ° 357 const formRoom = form.querySelector('.js-yprox-searchForm__rooms'); 358 const formWrpRoom = form.querySelector('.js-yprox-searchForm__wrpRooms'); 359 if (flagCalendar) { 360 // ã«ã¬ã³ãã¼ã表示ããå ´å 361 formBoxCheckInnYear && formWrpCheckInn.removeChild(formBoxCheckInnYear); // å¹´ã®ã©ããã¼ãåé¤ 362 formBoxCheckInnMonth && formWrpCheckInn.removeChild(formBoxCheckInnMonth); // æã®ã©ããã¼ãåé¤ 363 formBoxCheckInnDay && formWrpCheckInn.removeChild(formBoxCheckInnDay); // æ¥ã®ã©ããã¼ãåé¤ 364 formWrpNights && formWrpNights.parentNode.removeChild(formWrpNights); // æ³æ°ã®ã©ããã¼ãåé¤ 365 //ããã©ã«ãã®æ³æ°ã¯åé¤ããã®ã§æ¤ç´¢ç¨ã«inputã追å 366 const formNights = document.createElement('input'); 367 formNights.type = 'hidden'; 368 formNights.name = 'nights'; 369 formNights.value = nInitStay; 370 formNights.classList.add('js-yprox-searchForm__nights'); 371 formWrpCheckInn.appendChild(formNights); 372 // ã«ã¬ã³ãã¼ã®åæå¤ãè¨å® 373 formCheckInn.value = d.format('YYYYMMDD'); // æ¥ä» 374 const fp = flatpickr(formCheckInnOut, { 375 locale: calendarLocale, // è¨èª 376 mode: "range", // æ¥ä»ã®ç¯å²ã鏿 377 dateFormat: 'Y/m/d(D)', // æ¥ä»ã®ãã©ã¼ããã 378 defaultDate: [dayjs().add(nInitDay, 'day').format('YYYY/MM/DD'), dayjs().add(nInitDay + 1, 'day').format('YYYY/MM/DD')], // åæå¤ 379 showMonths: window.innerWidth > windowMobileWidth ? nInitCalendar : nInitCalendarMobile, // æã®è¡¨ç¤ºæ° 380 minDate: 'today', // 仿¥ä»¥éã®æ¥ä»ã®ã¿é¸æå¯è½ 381 maxDate: dayjs().add(nOpMaxYear - 1, 'year').format('YYYY/MM/DD'), // ã«ã¬ã³ãã¼ã®æå¤§æ¥ä» 382 static: true, // ã«ã¬ã³ãã¼ã®è¡¨ç¤ºå ´æãinputã®é£ã«åºå® 383 onDayCreate: function (dObj, dStr, fp, dayElem) { 384 // ã«ã¬ã³ãã¼ã®æ¥ä»ã表示ãããæ 385 /** 386 * ææ¥ã®ã¯ã©ã¹ãä»ä¸ 387 * */ 388 switch (dayjs(dayElem.dateObj).format('d')) { 389 case '0': 390 dayElem.classList.add('is-sunday'); 391 break; 392 case '1': 393 dayElem.classList.add('is-monday'); 394 break; 395 case '2': 396 dayElem.classList.add('is-tuesday'); 397 break; 398 case '3': 399 dayElem.classList.add('is-wednesday'); 400 break; 401 case '4': 402 dayElem.classList.add('is-thursday'); 403 break; 404 case '5': 405 dayElem.classList.add('is-friday'); 406 break; 407 case '6': 408 dayElem.classList.add('is-saturday'); 409 break; 410 } 411 }, 412 onChange: function (selectedDates, dateStr, instance) { 413 // æ¥ä»ã夿´ãããæ 414 const d = dayjs(selectedDates[0]); // dayjs object 415 nYear = d.year(); // å¹´ 416 nMonth = d.month() + 1; // æ 417 nDay = d.date(); // æ¥ 418 formCheckInn.value = d.format('YYYYMMDD'); // æ¥ä» 419 // ãã§ãã¯ã¢ã¦ãæ¥ã®æ¡å ã表示 420 if (!flagCalendarHideCheckOutText && selectedDates.length <= 1) { 421 queueMicrotask(() => { 422 showCheckOutInfo(instance.selectedDateElem); 423 }); 424 } 425 //æ³æ°ãåè¨ç® 426 const nStay = selectedDates.length <= 1 ? null : dayjs(selectedDates[1]).diff(dayjs(selectedDates[0]), 'day'); // æ³æ° 427 if (nStay !== null) { 428 /** 429 * ãã§ãã¯ã¤ã³ã»ãã§ãã¯ã¢ã¦ãæ¥ã鏿ãããå ´å 430 * */ 431 formNights.name = 'nights'; 432 formNights.value = nStay; // æ³æ° 433 } else { 434 formNights.removeAttribute('name'); 435 } 436 /** 437 * ã«ã¬ã³ãã¼Inputå ã®æåãåæè¨å®ããcalendarSpanStr ã«å¤æ´ 438 */ 439 if (calendarSpanStr && calendarSpanStr !== '') { 440 const input = instance._input; 441 let str = ''; 442 const lenSeparators = rangeSeparators.length; 443 for (let i = 0; i < lenSeparators; i++) { 444 if (input.value.indexOf(rangeSeparators[i]) !== -1) { 445 str = input.value.replace(rangeSeparators[i], calendarSpanStr); 446 } 447 } 448 input.value = str; 449 } 450 // inputã®valueã夿´ 451 if (selectedDates.length === 1) { 452 instance.input.value = d.format('YYYY/MM/DD(ddd)'); 453 } else { 454 const dd = dayjs(selectedDates[0]).format('YYYYMMDD'); 455 const dd2 = dayjs(selectedDates[1]).format('YYYYMMDD'); 456 if (dd === dd2) { 457 instance.input.value = d.format('YYYY/MM/DD(ddd)'); 458 } 459 } 460 }, onReady: function (selectedDates, dateStr, instance) { 461 // ã«ã¬ã³ãã¼ã表示ãããæ 462 /** 463 * ã«ã¬ã³ãã¼Inputå ã®æåãåæè¨å®ããcalendarSpanStr ã«å¤æ´ 464 */ 465 if (calendarSpanStr && calendarSpanStr !== '') { 466 const input = instance._input; 467 let str = ''; 468 const lenSeparators = rangeSeparators.length; 469 //ã¹ã¿ã¤ã«ã調æ´ãã 470 if (instance.calendarContainer) { 471 const container = instance.calendarContainer.querySelector('.flatpickr-innerContainer'); 472 if(container){ 473 container.style.overflow = 'visible'; 474 const outer = container.querySelector('.flatpickr-days'); 475 if(outer){ 476 outer.style.overflow = 'visible'; 477 } 478 } 479 } 480 for (let i = 0; i < lenSeparators; i++) { 481 if (input.value.indexOf(rangeSeparators[i]) !== -1) { 482 str = input.value.replace(rangeSeparators[i], calendarSpanStr); 483 } 484 } 485 input.value = str; 486 } 487 }, 488 }); 489 yproXClendars.push(fp); // ã«ã¬ã³ãã¼ãé åã«æ ¼ç´ 490 } else { 491 // ã«ã¬ã³ãã¼ã表示ããªãå ´å 492 formWrpCheckInn.removeChild(formCheckInnOut); // ã«ã¬ã³ãã¼ãåé¤ 493 //å¹´ 494 if (formCheckInnYear) { 495 //nOpMaxYearã®æ°ã ãoptionã追å 496 for (let j = 0; j < nOpMaxYear; j++) { 497 const Option = document.createElement('option'); 498 Option.value = dayjs().add(j, 'year').year(); 499 Option.textContent = dayjs().add(j, 'year').year(); 500 formCheckInnYear.appendChild(Option); 501 if (Option.value === String(nYear)) { 502 Option.setAttribute('selected', 'selected'); 503 } 504 } 505 // å¹´ã®å¤æ´ 506 formCheckInnYear.addEventListener('change', function (e) { 507 nYear = e.currentTarget.value; 508 const yd = dayjs().year(nYear).month(nMonth - 1).date(1);
509 const nMaxDay = yd.endOf('month').date(); 510 if (Number(nMaxDay) < Number(nDay)) { 511 nDay = nMaxDay; 512 } 513 // å¹´ã®å¤æ´æã«æ¥ä»ã®æå¤§å¤ã夿´ 514 setMaxDate(formCheckInnDay, nMaxDay, nDay, String(nYear) + String(ToDoubleDigits(nMonth)) + String(ToDoubleDigits(nDay))); 515 //æ¤ç´¢å¹´ææ¥ã夿´ 516 setSearchDate(formCheckInn, nYear, nMonth, nDay); 517 }); 518 } 519 //æ 520 if (formCheckInnMonth) { 521 // 12ã¶æåã®optionã追å 522 for (let j = 1; j <= 12; j++) { 523 const Option = document.createElement('option'); 524 Option.value = j; 525 Option.textContent = j; 526 formCheckInnMonth.appendChild(Option); 527 if (j === nMonth) { 528 Option.setAttribute('selected', 'selected'); 529 } 530 } 531 // æã®å¤æ´ 532 formCheckInnMonth.addEventListener('change', function (e) { 533 nMonth = e.currentTarget.value; 534 const md = dayjs().year(nYear).month(nMonth - 1).date(1); 535 const nMaxDay = md.endOf('month').date(); 536 if (Number(nMaxDay) < Number(nDay)) { 537 nDay = nMaxDay; 538 } 539 // æã®å¤æ´æã«æ¥ä»ã®æå¤§å¤ã夿´ 540 setMaxDate(formCheckInnDay, nMaxDay, nDay, String(nYear) + String(ToDoubleDigits(nMonth)) + String(ToDoubleDigits(nDay))); 541 //æ¤ç´¢å¹´ææ¥ã夿´ 542 setSearchDate(formCheckInn, nYear, nMonth, nDay); 543 }); 544 } 545 //æ¥ 546 if (formCheckInnDay) { 547 const nMaxDay = d.endOf('month').date(); 548 // æ¥ä»ã®å¤æ´ 549 formCheckInnDay.addEventListener('change', function (e) { 550 nDay = e.currentTarget.value; 551 //æ¤ç´¢å¹´ææ¥ã夿´ 552 setSearchDate(formCheckInn, nYear, nMonth, nDay); 553 }); 554 // æã®æå¤§æ¥æ°åã®optionã追å 555 setMaxDate(formCheckInnDay, nMaxDay, nInitDay); 556 } 557 // æ¥ä» 558 if (formCheckInn) { 559 // æ¥ä»ã®åæå¤ãè¨å® 560 setSearchDate(formCheckInn, nYear, nMonth, nDay); 561 } 562 } 563 // æ¥ä»ãªã 564 if (formNoDate) { 565 // æ¥ä»ãªãã®åæå¤ãè¨å® 566 const parentFormCheckInnOut = formCheckInnOut ? formCheckInnOut.parentNode : null; 567 if (flagNoDate) { 568 formNoDate.setAttribute('checked', 'checked'); 569 formCheckInn.setAttribute('disabled', 'disabled'); 570 if (flagCalendar) { 571 // ã«ã¬ã³ãã¼ã表示ããå ´å 572 formCheckInnOut.setAttribute('disabled', 'disabled'); 573 parentFormCheckInnOut && parentFormCheckInnOut.setAttribute('disabled', 'disabled'); 574 } else { 575 // ã«ã¬ã³ãã¼ã表示ããªãå ´å 576 formCheckInnYear.setAttribute('disabled', 'disabled'); 577 formCheckInnMonth.setAttribute('disabled', 'disabled'); 578 formCheckInnDay.setAttribute('disabled', 'disabled'); 579 } 580 } 581 // æ¥ä»ãªãã®å¤æ´ 582 formNoDate.addEventListener('change', function (e) { 583 // æ¥ä»ãªãã®ãã§ãã¯ãå ¥ã£ã¦ããå ´å 584 if (e.currentTarget.checked) { 585 formCheckInn.setAttribute('disabled', 'disabled'); 586 formCheckInnOut && formCheckInnOut.setAttribute('disabled', 'disabled'); 587 formCheckInnYear && formCheckInnYear.setAttribute('disabled', 'disabled'); 588 formCheckInnMonth && formCheckInnMonth.setAttribute('disabled', 'disabled'); 589 formCheckInnDay && formCheckInnDay.setAttribute('disabled', 'disabled'); 590 parentFormCheckInnOut && parentFormCheckInnOut.setAttribute('disabled', 'disabled'); 591 } else { 592 // æ¥ä»ãªãã®ãã§ãã¯ãå ¥ã£ã¦ããªãå ´å 593 formCheckInn.removeAttribute('disabled'); 594 formCheckInnOut && formCheckInnOut.removeAttribute('disabled'); 595 formCheckInnYear && formCheckInnYear.removeAttribute('disabled'); 596 formCheckInnMonth && formCheckInnMonth.removeAttribute('disabled'); 597 formCheckInnDay && formCheckInnDay.removeAttribute('disabled'); 598 parentFormCheckInnOut && parentFormCheckInnOut.removeAttribute('disabled'); 599 } 600 }); 601 } 602 //nOpMaxRoomã®æ°ã ãoptionã追å 603 if (formRoom) { 604 for (let j = 1; j <= nOpMaxRoom; j++) { 605 const Option = document.createElement('option'); 606 Option.value = j; 607 Option.textContent = j + strRooms; 608 formRoom.appendChild(Option); 609 if (j === nInitRoom) { 610 Option.setAttribute('selected', 'selected'); 611 } 612 } 613 } 614 // ãã©ã¼ã ãè¤æ°ããå ´åã¯ãIDåéè¤ãé¿ãããããã®æ«å°¾ã«æ°åãä»ãã 615 if (lenSearchForm > 1) { 616 //ãã©ã¼ã ã®æ°ã ãã¯ã©ã¹åã追å 617 form.classList.add('js-yprox-searchForm_' + String(i + 1)); 618 const labels = form.querySelectorAll('.js-yprox-searchForm__wrpLabel'); // ã©ãã« 619 const lenLabels = labels.length; // ã©ãã«ã®æ° 620 // ã©ãã«ã®for屿§ã¨inputã®id屿§ã«æ°åãä»ãã 621 for (let j = 0; j < lenLabels; j++) { 622 const wrpLabel = labels[j]; // ã©ãã«ã®ã©ããã¼ 623 const label = wrpLabel.querySelectorAll('label'); // ã©ãã« 624 const lenLabel = label.length; // ã©ãã«ã®æ° 625 const input = wrpLabel.querySelectorAll('input'); // input 626 const lenInput = input.length; // inputã®æ° 627 const select = wrpLabel.querySelectorAll('select'); // select 628 const lenSelect = select.length; // selectã®æ° 629 // ã©ãã«ã1ã¤ä»¥ä¸ããå ´å 630 if (lenLabel > 0) { 631 // ã©ãã«ã®for屿§ã«æ°åãä»ãã 632 for (let k = 0; k < lenLabel; k++) { 633 label[k].setAttribute('for', label[k].getAttribute('for') + '_' + String(i + 1)); 634 } 635 } 636 // inputã1ã¤ä»¥ä¸ããå ´å 637 if (lenInput > 0) { 638 // inputã®id屿§ã«æ°åãä»ãã 639 for (let k = 0; k < lenInput; k++) { 640 if (input[k].getAttribute('id') && input[k].getAttribute('id') !== '') { 641 input[k].setAttribute('id', input[k].getAttribute('id') + '_' + String(i + 1)); 642 } 643 } 644 } 645 // selectã1ã¤ä»¥ä¸ããå ´å 646 if (lenSelect > 0) { 647 // selectã®id屿§ã«æ°åãä»ãã 648 for (let k = 0; k < lenSelect;
648 k++) { 649 if (select[k].getAttribute('id') && select[k].getAttribute('id') !== '') { 650 select[k].setAttribute('id', select[k].getAttribute('id') + '_' + String(i + 1)); 651 } 652 } 653 } 654 } 655 } 656 } 657 window.addEventListener('resize', function () { 658 setNumCalendarMonth(windowMobileWidth, wr_wait, yproXClendars, nInitCalendar, nInitCalendarMobile); 659 }, false); 660} 661 662/** 663 * æ¥ä»ã®æå¤§å¤ã夿´ 664 * @param select æ¥ä»ã®selectè¦ç´ 665 * @param days æå¤§å¤ 666 * @param initDay åæå¤ 667 */ 668function setMaxDate(select, days, initDay, currentDay = null) { 669 const d = !currentDay ? dayjs().add(initDay, 'day').date() : dayjs(currentDay).date(); 670 select.innerHTML = ''; 671 for (let j = 1; j <= days; j++) { 672 const Option = document.createElement('option'); 673 Option.value = j; 674 Option.textContent = j; 675 select.appendChild(Option); 676 if (j === d) { 677 Option.setAttribute('selected', 'selected'); 678 } 679 } 680} 681 682/** 683 * æ¥ä»ã®åæå¤ãè¨å® 684 * @param checkInn ãã§ãã¯ã¤ã³æ¥ä»ã®inputè¦ç´ 685 * @param year å¹´ 686 * @param month æ 687 * @param day æ¥ 688 */ 689function setSearchDate(checkInn, year, month, day) { 690 checkInn.value = String(year) + String(ToDoubleDigits(Number(month))) + String(ToDoubleDigits(Number(day))); 691} 692 693/** 694 * 0åã 695 * @param num æ°å¤ 696 * @param digits æ¡æ° 697 * @returns {string} 698 * @constructor 699 */ 700function ToDoubleDigits(num, digits = 2) { 701 return (Array(digits).join('0') + num).slice(-digits); 702}; 703 704/** 705 * windowã®å¹ ã«ãã£ã¦ã«ã¬ã³ãã¼ã®è¡¨ç¤ºæã夿´ 706 * @param wm windowã®å¹ 707 * @param wait ã¦ã£ã³ãã¦ãªãµã¤ãºæã®å¾ ã¡æé 708 * @param init åæè¡¨ç¤ºãã©ãã 709 * @param calendars ã«ã¬ã³ãã¼ã®è¦ç´ 710 * @param numCalendar ã«ã¬ã³ãã¼ã®è¡¨ç¤ºææ° 711 */ 712function setNumCalendarMonth(wm, wait, calendars, numCalendar, numCalendarMobile) { 713 const len_c = calendars.length; 714 if (len_c > 0) { 715 clearTimeout(yprox_wr_queue); 716 yprox_wr_queue = setTimeout(function () { 717 if (wm > yprox_wr_currentWidth) { 718 if (yprox_wr_currentWidth === window.innerWidth && yprox_wr_currentHeight === window.innerHeight) { 719 return; 720 } 721 } else { 722 if (yprox_wr_currentWidth === window.innerWidth) { 723 return; 724 } 725 } 726 yprox_wr_currentWidth = window.innerWidth; 727 yprox_wr_currentHeight = window.innerHeight; 728 //ã«ã¬ã³ãã¼ã®è¡¨ç¤ºæã夿´ 729 if (wm > yprox_wr_currentWidth) { 730 //ã¢ãã¤ã«ã®å ´å 731 for (let i = 0; i < len_c; i++) { 732 // calendars[i].destroy(); 733 calendars[i].set({showMonths: numCalendarMobile}); 734 } 735 } else { 736 //PCã®å ´å 737 for (let i = 0; i < len_c; i++) { 738 // calendars[i].destroy(); 739 calendars[i].set({showMonths: numCalendar}); 740 } 741 } 742 }, wait); 743 } 744}; 745 746/** 747 * ãã§ãã¯ã¢ã¦ãæ¥ã®æ¡å ã表示 748 */ 749function showCheckOutInfo(selectElem) { 750 // è¦ç´ ãåå¨ããå ´å 751 if (selectElem) { 752 let positionClass = 'none'; 753 const cm = document.createElement('em'); 754 const cmb = document.createElement('b'); 755 cm.classList.add('flat__checkOutComment'); 756 cm.classList.add(positionClass); 757 cmb.innerHTML = textCheckInnOut; 758 cm.appendChild(cmb); 759 selectElem.appendChild(cm); 760 //ã¹ã¿ã¤ã«ãé©ç¨ 761 selectElem.style.position = 'relative'; 762 cm.style.position = 'absolute'; 763 cm.style.bottom = '99%'; 764 cm.style.left = '50%'; 765 cm.style.transform = 'translateX(-50%)'; 766 cm.style.color = '#000'; 767 cm.style.fontSize = '12px'; 768 cm.style.lineHeight = '1.4'; 769 cm.style.padding = '.5em .5em'; 770 cm.style.borderRadius = '.25em'; 771 cm.style.backgroundColor = '#f6f6f6'; 772 cm.style.boxShadow = '0 0 5px rgba(0,0,0,.2)'; 773 cm.style.border = '1px solid #dedede'; 774 cm.style.zIndex = '100'; 775 cm.style.width = '10em'; 776 cm.style.textAlign = 'center'; 777 cm.style.pointerEvents = 'none'; 778 cm.style.transition = 'opacity .3s ease-in-out'; 779 cm.style.opacity = '1'; 780 // ææ¥ã«ãã£ã¦ã¯ã©ã¹ãä»ä¸ 781 if (selectElem.classList.contains('is-sunday') || selectElem.classList.contains('is-monday')) { 782 positionClass = 'is-sunday'; 783 cm.style.left = '0'; 784 cm.style.transform = 'translateX(0)'; 785 } else if (selectElem.classList.contains('is-saturday') || selectElem.classList.contains('is-friday')) { 786 positionClass = 'is-saturday'; 787 cm.style.right = '0'; 788 cm.style.left = 'auto'; 789 cm.style.transform = 'translateX(0)'; 790 } 791 //3ç§å¾ã«åé¤ 792 setTimeout(() => { 793 cm.classList.add('is-hide'); 794 cm.style.opacity = '0'; 795 //0.3ç§å¾ã«åé¤ 796 setTimeout(() => { 797 cm.remove(); 798 }, 300); 799 }, 3000); 800 } 801}
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.