PageSourceSearch

https://stay.tabitabigujo.com/js/gadget/form.js

js tabitabigujo.com collected 2026-10-04 04:51:13 UTC 47,138 bytes, 1,275 lines download raw bytes

1var userAgent = navigator.userAgent;
2const STAYNAVI_LOCAL_SEARCH_URL = "/search/results?"
3const PREF_ID_MIN = 1
4const PREF_ID_MAX = 47
5
6var root = '';
7var scripts = document.getElementsByTagName("script");
8var i = scripts.length;
9while (i--) {
10    var match = scripts[i].src.match(/(^|.*\/)js\/gadget\/form\.js$/);
11    if (match) {
12        // rootの値は下記のような形となる想定
13        // 'https://local.staynavi.direct/'
14        root = match[1];
15        break;
16    }
17}
18const API_URL = root + 'forcia/search/count';
19
20$.getScript(
21    "https://cdn.jsdelivr.net/npm/flatpickr"
22).done(function() {
23    $.getScript(
24        "https://cdn.jsdelivr.net/npm/flatpickr/dist/l10n/ja.js"
25    );
26});
27
28
29const createTabikuraFormGadget = () => {
30    document.write('<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">');
31    document.write('<link rel="stylesheet" href="' + root + 'css/vcommon/tabikura/module.css">');
32
33    if (typeof customer_code == 'undefined') {
34        console.error('ERROR:customer_code is required')
35        return false;
36    }
37
38    let defaultFlg = true
39    if (defaultFormCheck() === false) {
40        defaultFlg = false
41    }
42
43    if (defaultFlg) {
44        createDefaultFormGadget()
45    } else {
46        createCustomFormGadget()
47    }
48
49}
50
51const defaultFormCheck = () => {
52    if (typeof forcia_var == 'undefined') {
53        return true;
54    }
55
56    if (typeof forcia_var.sd_id == 'undefined'
57        && typeof forcia_var.go_id == 'undefined'
58        && typeof forcia_var.cp_id == 'undefined'
59        && typeof forcia_var.rn_id == 'undefined'
60        && typeof forcia_var.pn_id == 'undefined'
61        && typeof forcia_var.px_id == 'undefined'
62        && typeof forcia_var.rt_id == 'undefined'
63        && typeof forcia_var.mc_id == 'undefined'
64        && typeof forcia_var.kw_id == 'undefined'
65        && typeof forcia_var.kwtype_id == 'undefined'
66        && typeof forcia_var.datacount_id == 'undefined'
67        && typeof forcia_var.pf_id == 'undefined'
68        && typeof forcia_var.ar1_id == 'undefined'
69        && typeof forcia_var.ar2_id == 'undefined') {
70        return true;
71    } else {
72        return false;
73    }
74}
75
76// デフォルトフォーム作成
77const createDefaultFormGadget = () => {
78    var defaultHtml = '';
79
80    defaultHtml += '<link rel="stylesheet" href="' + root + 'css/vcommon/tabikura/result.css">';
81    defaultHtml += '<link rel="stylesheet" href="' + root + 'css/vcommon/tabikura/form.css">';
82    defaultHtml += '<body>';
83    defaultHtml += '<div id="FormWrapper">';
84    defaultHtml += '<div class="upper">';
85    defaultHtml += '<div>';
86
87    // エリアフォーム生成
88    defaultHtml += makeDefaultAreaFormHtml(defaultHtml);
89
90    // 宿泊日フォーム生成
91    defaultHtml += makeDefaultStayDateFormHtml(defaultHtml);
92
93    // 人数フォーム生成
94    defaultHtml += makeDefaultCapacityFormHtml(defaultHtml);
95
96    // 室数フォーム生成
97    defaultHtml += makeDefaultRoomNumberFormHtml(defaultHtml);
98
99    // 料金フォーム生成
100    defaultHtml += makeDefaultPriceFormHtml(defaultHtml);
101
102    // 件数表示生成
103    defaultHtml += makeDefaultDataCountHtml(defaultHtml);
104
105    defaultHtml += '</div>';
106
107    // キーワード検索フォーム生成
108    defaultHtml += makeDefaultKeyWordFormHtml(defaultHtml);
109
110    defaultHtml += '<div class="right"><button class="btn go" id="go">検索</button></div>';
111    defaultHtml += '<div class="clear"></div>';
112
113    defaultHtml += '</div>';
114    defaultHtml += '</body>';
115
116    if ($('body').length === 0) {
117        $('html').append('<body></body>');
118    }
119    $('body').append(defaultHtml);
120
121    if (typeof forcia_var !== 'undefined' && typeof forcia_var.sd !== 'undefined') {
122        $('#sd').val(forcia_var.sd);
123    }
124
125    if (typeof forcia_var !== 'undefined' && typeof forcia_var.sn !== 'undefined' && $.inArray(forcia_var.sn, [1,2,3,4,5,6,7,8]) !== -1) {
126        $('#sn').val(forcia_var.sn);
127    }
128
129    if (typeof forcia_var !== 'undefined'
130        && typeof forcia_var.cp !== 'undefined'
131        && $.inArray(forcia_var.cp, [1,2,3,4,5,6]) !== -1) {
132        $('#cp').val(forcia_var.cp);
133    }
134
135    if (typeof forcia_var !== 'undefined'
136        && typeof forcia_var.rn !== 'undefined'
137        && $.inArray(forcia_var.rn, [1,2,3,4,5,6]) !== -1) {
138        $('#rn').val(forcia_var.rn);
139    }
140
141    if (typeof forcia_var !== 'undefined'
142        && typeof forcia_var.pn !== 'undefined'
143        && $.inArray(forcia_var.pn, [1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,12000,14000,16000,18000,20000,30000,40000,50000,100000,150000,200000]) !== -1) {
144        $('#pn').val(forcia_var.pn);
145    }
146
147    if (typeof forcia_var !== 'undefined'
148        && typeof forcia_var.px !== 'undefined'
149        && $.inArray(forcia_var.px, [1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,12000,14000,16000,18000,20000,30000,40000,50000,100000,150000,200000]) !== -1) {
150        $('#px').val(forcia_var.px);
151    }
152
153    // 件数表示
154    let count = true;
155    let query = makeDefaultFormQueryString(count);
156    makeDefaultFormCountSearchResultHtml(query);
157
158    $('#pf').change(function() {
159        // area_dropdown.jsのchangeイベントによる、他エリアリストの初期化を待つ
160        setTimeout(function() {
161            query = makeDefaultFormQueryString(count);
162            makeDefaultFormCountSearchResultHtml(query);
163        }, 0)
164    })
165
166    $('#ar1').change(function() {
167        // area_dropdown.jsのchangeイベントによる、他エリアリストの初期化を待つ
168        setTimeout(function() {
169            query = makeDefaultFormQueryString(count);
170            makeDefaultFormCountSearchResultHtml(query);
171        }, 0)
172    })
173
174    $('#ar2').change(function() {
175        query = makeDefaultFormQueryString(count);
176        makeDefaultFormCountSearchResultHtml(query);
177    })
178    $('#sd').change(function() {
179        query = makeDefaultFormQueryString(count);
180        makeDefaultFormCountSearchResultHtml(query);
181    })
182
183    $('#sn').change(function() {
184        query = makeDefaultFormQueryString(count);
185        makeDefaultFormCountSearchResultHtml(query);
186    })
187
188    $('#cp').change(function() {
189        query = makeDefaultFormQueryString(count);
190        makeDefaultFormCountSearchResultHtml(query);
191    })
192
193    $('#rn').change(function() {
194        query = makeDefaultFormQueryString(count);
195        makeDefaultFormCountSearchResultHtml(query);
196    })
197
198    $('#pn').change(function() {
199        query = makeDefaultFormQueryString(count);
200        makeDefaultFormCountSearchResultHtml(query);
201    })
202
203    $('#px').change(function() {
204        query = makeDefaultFormQueryString(count);
205        makeDefaultFormCountSearchResultHtml(query);
206    })
207
208    $('.go').click(function() {
209        query = makeDefaultFormQueryString();
210        window.location.href = root + customer_code + STAYNAVI_LOCAL_SEARCH_URL + query;
211    })
212}
213
214const makeDefaultAreaFormHtml = () => {
215    let areaDefault = 0;
216    let ar1Default = "''";
217    let ar2Default = "''";
218    let areaForm = '';
219    if (typeof forcia_var !== 'undefined' && typeof forcia_var.pf !== 'undefined') {
220        areaDefault = "'" + forcia_var.pf + "'";
221    }
222
223    if (typeof forcia_var !== 'undefined' && typeof forcia_var.ar !== 'undefined') {
224        let areaDefaultArray = forcia_var.ar.split('_');
225
226        if (areaDefaultArray[0]) {
227            ar1Default = "'" + areaDefaultArray[0] + "'";
228            if (areaDefaultArray[1]) {
229                ar2Default = "'" + areaDefaultArray[1] + "'";
230            }
231        }
232    }
233
234    areaForm += '<div class="formTitle">エリア:</div>';
235    areaForm += '<div class="dd" style="display:flex; flex-flow: column;">';
236    areaForm += '<select id="pf" class="dropdown_pref_list" name="dropdown_pref_list">';
237    areaForm += '<option class="" value="">選択して下さい</option>';
238    areaForm += '</select>';
239    areaForm += '<select id="ar1" class="dropdown_area_group_list" name="dropdown_area_group_list" style="margin-top: 2px">';
240    areaForm += '<option class="" value="">選択して下さい</option>';
241    areaForm += '</select>';
242    areaForm += '<select id="ar2" class="dropdown_area_list" name="dropdown_area_list" style="margin-top: 2px">';
243    areaForm += '<option class="" value="">選択して下さい</option>';
244    areaForm += '</select>';
245    areaForm += '</div>';
246    areaForm += '<script type="text/javascript">\n' +
247        '    var prefIdDefault =' + areaDefault + ';\n' +
248        '    var area1CodeDefault =' + ar1Default + ';\n' +
249        '    var area2CodeDefault = ' + ar2Default + ';\n' +
250        '</script>';
251
252    $.getScript(
253        root + "js/vcommon/staynavi_local/area_dropdown.js"
254    );
255
256    return areaForm;
257}
258
259const makeDefaultStayDateFormHtml = () => {
260    let stayDateForm = '';
261
262    stayDateForm += '<div>';
263    stayDateForm += '<div class="formTitle" style="margin-top: 4px">
263宿泊日:</div>';
264    stayDateForm += '<div class="dd">';
265    stayDateForm += '<select id="sd" style="width:100px;" onchange="activeSnForm()">';
266    stayDateForm += createDateSelectOptionHtml();
267    stayDateForm += '</select>';
268    stayDateForm += '<select id="sn" autocomplete="off" disabled="">';
269    stayDateForm += '<option value="1" selected="selected">1</option>';
270    stayDateForm += '<option value="2">2</option>';
271    stayDateForm += '<option value="3">3</option>';
272    stayDateForm += '<option value="4">4</option>';
273    stayDateForm += '<option value="5">5</option>';
274    stayDateForm += '<option value="6">6</option>';
275    stayDateForm += '<option value="7">7</option>';
276    stayDateForm += '<option value="8">8</option>';
277    stayDateForm += '</select>泊';
278    stayDateForm += '<a class="bookNewBtn" href="#" style="margin-left:10px; font-size: 12px;" id="checkinCalendar"><img src="' + root + 'img/vcommon/staysearch/icon_event.svg"> カレンダー</a>';
279    stayDateForm += '<div class="bookNewModal bookNewModal02" id="bookNewModal02">';
280    stayDateForm += '<div class="bookNew">';
281    stayDateForm += '<div class="modalContents">';
282    stayDateForm += '<form action="" class="modalForm">';
283    stayDateForm += '<h2 class="modalFormTitle">';
284    stayDateForm += '日付を選択';
285    stayDateForm += '<span class="todayBtn">(<span class="c-lightblue">本日を選択</span>)</span>';
286    stayDateForm += '<span class="closeBtn stayNewModalCloseBtn">閉じる</span>';
287    stayDateForm += '</h2>';
288    stayDateForm += '<div class="datepickerWrap">';
289    stayDateForm += '<input class="flatpickrRange flatpickr-search" type="text">';
290    stayDateForm += '</div>';
291    stayDateForm += '</form>';
292    stayDateForm += '</div>';
293    stayDateForm += '</div>';
294    stayDateForm += '</div>';
295    stayDateForm += '</div>';
296    stayDateForm += '</div>';
297    stayDateForm += '</div>';
298
299    return stayDateForm;
300}
301
302
303const makeDefaultCapacityFormHtml = () => {
304    let capacityForm = '';
305    capacityForm += '<div class="FormWrapper">';
306    capacityForm += '<div class="formTitle">人数:</div>';
307    capacityForm += '<div class="dd">';
308    capacityForm += '<select id="cp" autocomplete="off">';
309    capacityForm += '<option value="1">1</option>';
310    capacityForm += '<option value="2" selected="selected">2</option>';
311    capacityForm += '<option value="3">3</option>';
312    capacityForm += '<option value="4">4</option>';
313    capacityForm += '<option value="5">5</option>';
314    capacityForm += '<option value="6">6</option>';
315    capacityForm += '</select> 名';
316
317    return capacityForm;
318}
319
320const makeDefaultRoomNumberFormHtml = () => {
321    let roomNumberForm = '';
322    roomNumberForm += '<select id="rn" autocomplete="off">';
323    roomNumberForm += '<option value="">1</option>';
324    roomNumberForm += '<option value="2">2</option>';
325    roomNumberForm += '<option value="3">3</option>';
326    roomNumberForm += '<option value="4">4</option>';
327    roomNumberForm += '<option value="5">5</option>';
328    roomNumberForm += '<option value="6">6</option>';
329    roomNumberForm += '</select> 室';
330    roomNumberForm += '</div>';
331    roomNumberForm += '</div>';
332
333    return roomNumberForm;
334}
335
336const makeDefaultPriceFormHtml = () => {
337    let priceForm = '';
338    priceForm += '<div class="FormWrapper">';
339    priceForm += '<div class="formTitle">予算:</div>';
340    priceForm += '<div class="dd">';
341    priceForm += '<select id="pn" autocomplete="off">';
342    priceForm += '<option value="">指定なし</option>';
343    priceForm += '<option value="1000">1,000円</option>';
344    priceForm += '<option value="2000">2,000円</option>';
345    priceForm += '<option value="3000">3,000円</option>';
346    priceForm += '<option value="4000">4,000円</option>';
347    priceForm += '<option value="5000">5,000円</option>';
348    priceForm += '<option value="6000">6,000円</option>';
349    priceForm += '<option value="7000">7,000円</option>';
350    priceForm += '<option value="8000">8,000円</option>';
351    priceForm += '<option value="9000">9,000円</option>';
352    priceForm += '<option value="10000">10,000円</option>';
353    priceForm += '<option value="12000">12,000円</option>';
354    priceForm += '<option value="14000">14,000円</option>';
355    priceForm += '<option value="16000">16,000円</option>';
356    priceForm += '<option value="18000">18,000円</option>';
357    priceForm += '<option value="20000">20,000円</option>';
358    priceForm += '<option value="30000">30,000円</option>';
359    priceForm += '<option value="40000">40,000円</option>';
360    priceForm += '<option value="50000">50,000円</option>';
361    priceForm += '<option value="100000">100,000円</option>';
362    priceForm += '<option value="150000">150,000円</option>';
363    priceForm += '<option value="200000">200,000円</option>';
364    priceForm += '</select>';
365    priceForm += '~';
366    priceForm += '<select id="px" autocomplete="off">';
367    priceForm += '<option value="">指定なし</option>';
368    priceForm += '<option value="1000">1,000円</option>';
369    priceForm += '<option value="2000">2,000円</option>';
370    priceForm += '<option value="3000">3,000円</option>';
371    priceForm += '<option value="4000">4,000円</option>';
372    priceForm += '<option value="5000">5,000円</option>';
373    priceForm += '<option value="6000">6,000円</option>';
374    priceForm += '<option value="7000">7,000円</option>';
375    priceForm += '<option value="8000">8,000円</option>';
376    priceForm += '<option value="9000">9,000円</option>';
377    priceForm += '<option value="10000">10,000円</option>';
378    priceForm += '<option value="12000">12,000円</option>';
379    priceForm += '<option value="14000">14,000円</option>';
380    priceForm += '<option value="16000">16,000円</option>';
381    priceForm += '<option value="18000">18,000円</option>';
382    priceForm += '<option value="20000">20,000円</option>';
383    priceForm += '<option value="30000">30,000円</option>';
384    priceForm += '<option value="40000">40,000円</option>';
385    priceForm += '<option value="50000">50,000円</option>';
386    priceForm += '<option value="100000">100,000円</option>';
387    priceForm += '<option value="150000">150,000円</option>';
388    priceForm += '<option value="200000">200,000円</option>';
389    priceForm += '</select>';
390    priceForm += '</div>';
391    priceForm += '</div>';
392
393    return priceForm;
394}
395
396const makeDefaultDataCountHtml = () => {
397    let dataCountForm = '';
398    dataCountForm += '<div class="msg"><p><span id="datacount"></span></p>';
399    dataCountForm += '<button class="btn go" id="go">検索</button>';
400    dataCountForm += '</div>';
401
402    return dataCountForm;
403}
404
405const makeDefaultKeyWordFormHtml = () => {
406    let keyWordForm = '';
407    keyWordForm += '<div class="lower">';
408    keyWordForm += '<h3>キーワードから探す</h3>';
409    keyWordForm += '<div class="form">';
410    keyWordForm += '<div class="left"><input type="text" value="" id="kw"></div>';
411
412    return keyWordForm;
413}
414
415
416
417// カスタムフォーム作成
418const createCustomFormGadget = () => {
419    let query = '';
420
421    // エリアフォーム
422    const pfId = forcia_var.pf_id;
423    const ar1Id = forcia_var.ar1_id;
424    const ar2Id = forcia_var.ar2_id;
425    const pfDefaultValue = forcia_var.pf;
426    const arDefaultValue = forcia_var.ar;
427    if (typeof pfId !== 'undefined' && typeof ar1Id !== 'undefined' && typeof ar2Id !== 'undefined' && pfId.length > 0 && ar1Id.length > 0 && ar2Id.length > 0) {
428        createCustomAreaFormHtml(pfId, ar1Id, ar2Id, pfDefaultValue, arDefaultValue);
429    }
430
431    // 日付フォーム
432    const sdId = forcia_var.sd_id;
433    const sdDefaultValue = forcia_var.sd;
434    if (typeof sdId !== 'undefined' && sdId.length > 0) {
435        createCustomStayDateFormHtml(sdId);
436        if (typeof sdDefaultValue !== 'undefined') {
437            $('#' + sdId).val(sdDefaultValue);
438        }
439    }
440
441    // 泊数フォーム
442    const snId = forcia_var.sn_id;
443    const snDefaultValue = forcia_var.sn;
444    if (typeof snId !== 'undefined' && snId.length > 0 && typeof $("#"+snId)[0] !== 'undefined' && $("#"+snId)[0].tagName === 'SELECT') {
445        makeCustomStayNumberFormHtml(snId);
446        if (typeof snDefaultValue !== 'undefined' && $.inArray(snDefaultValue, [1,2,3,4,5,6,7,8]) !== -1) {
447            $('#' + snId).val(snDefaultValue);
448        }
449    }
450
451    // 人数フォーム
452    const cpId = forcia_var.cp_id;
453    const cpDefaultValue = forcia_var.cp;
454    if (typeof cpId !== 'undefined' && cpId.length > 0 && typeof $("#"+cpId)[0] !== 'undefined' && $("#"+cpId)[0].tagName === 'SELECT') {
455        makeCustomCapacityFormHtml(cpId);
456        if (typeof cpDefaultValue !== 'undefined' && $.inArray(cpDefaultValue, [1,2,3,4,5,6]) !== -1) {
457            $('#' + cpId).val(cpDefaultValue);
458        }
459    }
460
461    // 室数フォーム
462    const rnId = forcia_var.rn_id;
463    const rnDefaultValue = forcia_var.rn;
464    if (typeof rnId !== 'undefined' && rnId.length > 0 && typeof $("#"+rnId)[0] !== 'undefined' && $("#"+rnId)[0].tagName === 'SELECT') {
465        makeCustomRoomNumberFormHtml(rnId);
466        if (typeof rnDefaultValue !== 'undefined' && $.inArray(rnDefaultValue, [1,2,3,4,5,6]) !== -1) {
467            $('#' + rnId).val(rnDefaultValue);
468        }
469    }
470
471    // 下限料金フォーム
472    const pnId = forcia_var.pn_id;
473    const pnDefaultValue = forcia_var.pn;
474    if (typeof pnId !== 'undefined' && pnId.length > 0 && typeof $("#"+pnId)[0] !== 'undefined' && $("#"+pnId)[0].tagName === 'SELECT') {
475        makeCustomPriceMinFormHtml(pnId);
476        if (typeof pnDefaultValue !== 'undefined' && $.inArray(pnDefaultValue, [1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,12000,14000,16000,18000,20000,30000,40000,50000,100000,150000,200000]) !== -1) {
477            $('#' + pnId).val(pnDefaultValue);
478        }
479    }
480
481    // 上限料金フォーム
482    const pxId = forcia_var.px_id;
483    const pxDefaultValue = forcia_var.px;
484    if (typeof pxId !== 'undefined' && pxId.length > 0 && typeof $("#"+pxId)[0] !== 'undefined' && $("#"+pxId)[0].tagName === 'SELECT') {
485        makeCustomPriceMaxFormHtml(pxId);
486        if (typeof pxDefaultValue !== 'undefined' && $.inArray(pxDefaultValue, [1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,12000,14000,16000,18000,20000,30000,40000,50000,100000,150000,200000]) !== -1) {
487            $('#' + pxId).val(pxDefaultValue);
488        }
489    }
490
491    // 部屋タイプフォーム
492    const rtId = forcia_var.rt_id;
493    const rtDefaultValue = forcia_var.rt;
494    if (typeof rtId !== 'undefined' && rtId.length > 0 && typeof $("#"+rtId)[0] !== 'undefined' && $("#"+rtId)[0].tagName === 'SELECT') {
495        makeCustomRoomTypeFormHtml(rtId);
496        if (typeof rtDefaultValue !== 'undefined' && $.inArray(rtDefaultValue, [0,1,2,3,4,5,6,7]) !== -1) {
497            $('#' + rtId).val(rtDefaultValue);
498        }
499    }
500
501    // 食事条件フォーム
502    const mcId = forcia_var.mc_id;
503    const mcDefaultValue = forcia_var.mc;
504    if (typeof mcId !== 'undefined' && mcId.length > 0 && typeof $("#"+mcId)[0] !== 'undefined' && $("#"+mcId)[0].tagName === 'SELECT') {
505        makeCustomMealCondFormHtml(mcId);
506        if (typeof mcDefaultValue !== 'undefined' && $.inArray(mcDefaultValue, [0,1,2,3,4]) !== -1) {
507            $('#' + mcId).val(mcDefaultValue);
508        }
509    }
510
511    const goId = forcia_var.go_id;
512
513    query = makeCustomFormQueryString();
514    makeCustomFormCountSearchResultHtml(query);
515
516    // 都道府県チェンジイベント
517    if (typeof pfId !== 'undefined' && pfId.length > 0) {
518        $('#' + pfId).change(function() {
519            // area_dropdown.jsのchangeイベントによる、他エリアリストの初期化を待つ
520            setTimeout(function () {
521                query = makeCustomFormQueryString();
522                makeCustomFormCountSearchResultHtml(query);
523            }, 0)
524        })
525    }
526
527    // エリア1チェンジイベント
528    if (typeof ar1Id !== 'undefined' && ar1Id.length > 0) {
529        $('#' + ar1Id).change(function() {
530            // area_dropdown.jsのchangeイベントによる、他エリアリストの初期化を待つ
531            setTimeout(function () {
532                query = makeCustomFormQueryString();
533                makeCustomFormCountSearchResultHtml(query);
534            }, 0)
535        })
536    }
537
538    // エリア2チェンジイベント
539    if (typeof ar2Id !== 'undefined' && ar2Id.length > 0) {
540        $('#' + ar2Id).change(function () {
541            query = makeCustomFormQueryString();
542            makeCustomFormCountSearchResultHtml(query);
543        })
544    }
545
546    // 日付チェンジイベント
547    if (typeof sdId !== 'undefined' && sdId.length > 0) {
548        $('#' + sdId).change(function () {
549            query = makeCustomFormQueryString();
550            makeCustomFormCountSearchResultHtml(query);
551        })
552    }
553
554    // 泊数チェンジイベント
555    if (typeof snId !== 'undefined' && snId.length > 0) {
556        $('#' + snId).change(function () {
557            query = makeCustomFormQueryString();
558            makeCustomFormCountSearchResultHtml(query);
559        })
560    }
561
562    // 人数チェンジイベント
563    if (typeof cpId !== 'undefined' && cpId.length > 0) {
564        $('#' + cpId).change(function () {
565            query = makeCustomFormQueryString();
566            makeCustomFormCountSearchResultHtml(query);
567        })
568    }
569
570    // 室数チェンジイベント
571    if (typeof rnId !== 'undefined' && rnId.length > 0) {
572        $('#' + rnId).change(function () {
573            query = makeCustomFormQueryString();
574            makeCustomFormCountSearchResultHtml(query);
575        })
576    }
577
578    // 下限料金チェンジイベント
579    if (typeof pnId !== 'undefined' && pnId.length > 0) {
580        $('#' + pnId).change(function () {
581            query = makeCustomFormQueryString();
582            makeCustomFormCountSearchResultHtml(query);
583        })
584    }
585
586    // 上限料金チェンジイベント
587    if (typeof pxId !== 'undefined' && pxId.length > 0) {
588        $('#' + pxId).change(function () {
589            query = makeCustomFormQueryString();
590            makeCustomFormCountSearchResultHtml(query);
591        })
592    }
593
594    // 部屋タイプチェンジイベント
595    if (typeof rtId !== 'undefined' && rtId.length > 0) {
596        $('#' + rtId).change(function () {
597            query = makeCustomFormQueryString();
598            makeCustomFormCountSearchResultHtml(query);
599        })
600    }
601
602    // 食事条件チェンジイベント
603    if (typeof mcId !== 'undefined' && mcId.length > 0) {
604        $('#' + mcId).change(function () {
605            query = makeCustomFormQueryString();
606            makeCustomFormCountSearchResultHtml(query);
607        })
608    }
609
610    // キーワードフォーカスアウトイベント
611    const kwId = forcia_var.kw_id;
612    if (typeof kwId !== 'undefined' && kwId.length > 0) {
613        oldKwVal = $("#" + kwId).val();
614        $('#' + kwId).blur(function () {
615            newKwVal = $("#" + kwId).val();
616            if (oldKwVal != newKwVal) {
617                oldKwVal = newKwVal;
618                query = makeCustomFormQueryString();
619                makeCustomFormCountSearchResultHtml(query);
620            }
621        })
622    }
623
624    // 検索クリックイベント
625    if (typeof goId !== 'undefined' && goId.length > 0) {
626        $('#' + goId).click(function () {
627            query = makeCustomFormQueryString();
628            window.location.href = root + customer_code + STAYNAVI_LOCAL_SEARCH_URL + query;
629        })
630    }
631}
632
633const makeDefaultFormQueryString = (count) => {
634    let query = '';
635
636    let pfDefault = forcia_var.pf;
637    let arDefault = forcia_var.ar;
638    let pfValue = $("#pf").val();
639    let ar1Value = $("#ar1").val();
640    let ar2Value = $("#ar2").val();
641    if (pfValue) {
642        query += '&pf=' + pfValue;
643        if (ar1Value) {
644            query += '&ar=' + ar1Value;
645            if (ar2Value) {
646                query += '_' + ar2Value;
647            }
648        }
649    } else if (typeof pfDefault !== 'undefined' && pfDefault >= PREF_ID_MIN && pfDefault <= PREF_ID_MAX) {
650        // 初期値が設定されている場合、クエリ文字列に追加
651        query += '&pf=' + pfDefault;
652        if (typeof arDefault !== 'undefined' && arDefault.length > 0) {
653            query += '&ar=' + arDefault;
654        }
655    }
656
657    let sdValue = $("#sd").val();
658    if (sdValue) {
659        query += '&sd=' + sdValue;
660    }
661
662    let snValue = $("#sn").val();
663    if (snValue) {
664        query += '&sn=' + snValue;
665    }
666
667    let cpValue = $("#cp").val();
668
669    if (cpValue) {
670        query += '&cp=' + cpValue;
671    }
672
673    let rnValue = $("#rn").val();
674    if (rnValue) {
675        query += '&rn=' + rnValue;
676    }
677
678    let pnValue = $("#pn").val();
679    if (pnValue) {
680        if (count) {
681            let pn_sn = 1;
682            if (snValue) {
683                pn_sn = snValue;
684            }
685            let pn_cp = 1;
686            if (cpValue) {
687                pn_cp = cpValue;
688            }
689            let pn_rn = 1;
690            if (rnValue) {
691                pn_rn = rnValue;
692            }
693            pnValue = pnValue / (pn_sn * pn_cp * pn_rn);
694        }
695
696        query += '&pn=' + pnValue;
697    }
698
699    let pxValue = $("#px").val();
700    if (pxValue) {
701        if (count) {
702            let px_sn = 1;
703            if (snValue) {
704                px_sn = snValue;
705            }
706            let px_cp = 1;
707            if (cpValue) {
708                px_cp = cpValue;
709            }
710            let px_rn = 1;
711            if (rnValue) {
712                px_rn = rnValue;
713            }
714            pxValue = pxValue / (px_sn * px_cp * px_rn);
715        }
716
717        query += '&px=' + pxValue;
718    }
719
720    let kwValue = $("#kw").val();
721    if (kwValue) {
722        query += '&kw=' + kwValue;
723    }
724
725    // let kwtypeValue = $("#kwtype").val();
726    let kwtypeValue = $("input[name='kwtype']:checked").val();
727
728    if (kwtypeValue) {
729        query += '&kwtype=' + kwtypeValue;
730    }
731    query = query.slice(1);
732
733    return query;
734}
735
736const createCustomAreaFormHtml = (pfId, ar1Id, ar2Id, pfDefaultValue, arDefaultValue) => {
737    let areaDefault = 0;
738    let ar1Default = "''";
739    let ar2Default = "''";
740    if (typeof pfDefaultValue !== 'undefined') {
741        areaDefault = "'" + pfDefaultValue + "'";
742    }
743
744    if (typeof arDefaultValue !== 'undefined') {
745        let areaDefaultArray = arDefaultValue.split('_');
746
747        if (areaDefaultArray[0]) {
748            ar1Default = "'" + areaDefaultArray[0] + "'";
749            if (areaDefaultArray[1]) {
750                ar2Default = "'" + areaDefaultArray[1] + "'";
751            }
752        }
753    }
754    let pfHtml = '';
755    pfHtml += '<select id="' + pfId + '>';
756    pfHtml += '<option class="" value="0">選択して下さい</option>';
757    pfHtml += '</select>';
758
759    let ar1Html = '';
760    ar1Html += '<select id="' + ar1Id + '>';
761    ar1Html += '<option class="" value="">選択して下さい</option>';
762    ar1Html += '</select>';
763
764    let ar2Html = '';
765    ar2Html += '<select id="' + ar2Id + '>';
766    ar2Html += '<option class="" value="">選択して下さい</option>';
767    ar2Html += '</select>';
768
769    let jsHtml = '<script type="text/javascript">\n' +
770        '    var prefIdDefault =' + areaDefault + ';\n' +
771        '    var area1CodeDefault =' + ar1Default + ';\n' +
772        '    var area2CodeDefault = ' + ar2Default + ';\n' +
773        '</script>';
774
775    document.write(jsHtml);
776
777
778    $('#' + pfId).html(pfHtml);
779    $('#' + pfId).addClass('dropdown_pref_list');
780    $('#' + pfId).attr('name', 'dropdown_pref_list');
781    $('#' + ar1Id).html(ar1Html);
782    $('#' + ar1Id).addClass('dropdown_area_group_list');
783    $('#' + ar1Id).attr('name', 'dropdown_area_group_list');
784    $('#' + ar2Id).html(ar2Html);
785    $('#' + ar2Id).addClass('dropdown_area_list');
786    $('#' + ar2Id).attr('name', 'dropdown_area_list');
787
788    $.getScript(
789        root + "js/vcommon/staynavi_local/area_dropdown.js"
790    );
791}
792
793const createCustomStayDateFormHtml = (sdId) => {
794    let sdHtml = '';
795    sdHtml += createDateSelectOptionHtml();
796    $('#' + sdId).html(sdHtml);
797}
798
799const makeCustomStayNumberFormHtml = (snId) => {
800    let snHtml = '';
801    snHtml += '<option value="1">1</option>';
802    snHtml += '<option value="2">2</option>';
803    snHtml += '<option value="3">3</option>';
804    snHtml += '<option value="4">4</option>';
805    snHtml += '<option value="5">5</option>';
806    snHtml += '<option value="6">6</option>';
807    snHtml += '<option value="7">7</option>';
808    snHtml += '<option value="8">8</option>';
809    $('#' + snId).html(snHtml);
810}
811
812const makeCustomCapacityFormHtml = (cpId) => {
813    let cpHtml = '';
814    cpHtml += '<option value="1">1</option>';
815    cpHtml += '<option value="2" selected="selected">2</option>';
816    cpHtml += '<option value="3">3</option>';
817    cpHtml += '<option value="4">4</option>';
818    cpHtml += '<option value="5">5</option>';
819    cpHtml += '<option value="6">6</option>';
820    $('#' + cpId).html(cpHtml);
821}
822
823const makeCustomRoomNumberFormHtml = (rnId) => {
824    let rnHtml = '';
825    rnHtml += '<option value="1">1</option>';
826    rnHtml += '<option value="2">2</option>';
827    rnHtml += '<option value="3">3</option>';
828    rnHtml += '<option value="4">4</option>';
829    rnHtml += '<option value="5">5</option>';
830    rnHtml += '<option value="6">6</option>';
831    $('#' + rnId).html(rnHtml);
832}
833
834const makeCustomPriceMinFormHtml = (pnId) => {
835    let pnHtml = '';
836    pnHtml += '<option value="">指定なし</option>';
837    pnHtml += '<option value="1000">1,000円</option>';
838    pnHtml += '<option value="2000">2,000円</option>';
839    pnHtml += '<option value="3000">3,000円</option>';
840    pnHtml += '<option value="4000">4,000円</option>';
841    pnHtml += '<option value="5000">5,000円</option>';
842    pnHtml += '<option value="6000">6,000円</option>';
843    pnHtml += '<option value="7000">7,000円</option>';
844    pnHtml += '<option value="8000">8,000円</option>';
845    pnHtml += '<option value="9000">9,000円</option>';
846    pnHtml += '<option value="10000">10,000円</option>';
847    pnHtml += '<option value="12000">12,000円</option>';
848    pnHtml += '<option value="14000">14,000円</option>';
849    pnHtml += '<option value="16000">16,000円</option>';
850    pnHtml += '<option value="18000">18,000円</option>';
851    pnHtml += '<option value="20000">20,000円</option>';
852    pnHtml += '<option value="30000">30,000円</option>';
853    pnHtml += '<option value="40000">40,000円</option>';
854    pnHtml += '<option value="50000">50,000円</option>';
855    pnHtml += '<option value="100000">100,000円</option>';
856    pnHtml += '<option value="150000">150,000円</option>';
857    pnHtml += '<option value="200000">200,000円</option>';
858    $('#' + pnId).html(pnHtml);
859}
860
861const makeCustomPriceMaxFormHtml = (pxId) => {
862    let pxHtml = '';
863    pxHtml += '<option value="">指定なし</option>';
864    pxHtml += '<option value="1000">1,000円</option>';
865    pxHtml += '<option value="2000">2,000円</option>';
866    pxHtml += '<option value="3000">3,000円</option>';
867    pxHtml += '<option value="4000">4,000円</option>';
868    pxHtml += '<option value="5000">5,000円</option>';
869    pxHtml += '<option value="6000">6,000円</option>';
870    pxHtml += '<option value="7000">7,000円</option>';
871    pxHtml += '<option value="8000">8,000円</option>';
872    pxHtml += '<option value="9000">9,000円</option>';
873    pxHtml += '<option value="10000">10,000円</option>';
874    pxHtml += '<option value="12000">12,000円</option>';
875    pxHtml += '<option value="14000">14,000円</option>';
876    pxHtml += '<option value="16000">16,000円</option>';
877    pxHtml += '<option value="18000">18,000円</option>';
878    pxHtml += '<option value="20000">20,000円</option>';
879    pxHtml += '<option value="30000">30,000円</option>';
880    pxHtml += '<option value="40000">40,000円</option>';
881    pxHtml += '<option value="50000">50,000円</option>';
882    pxHtml += '<option value="100000">100,000円</option>';
883    pxHtml += '<option value="150000">150,000円</option>';
884    pxHtml += '<option value="200000">200,000円</option>';
885    $('#' + pxId).html(pxHtml);
886}
887
888const makeCustomRoomTypeFormHtml = (rtId) => {
889    let rtHtml = '';
890    rtHtml += '<option value="" id="rt_0">指定なし ()</option>';
891    rtHtml += '<option value="3" id="rt_3">シングル ()</option>';
892    rtHtml += '<option value="4" id="rt_4">ダブル ()</option>';
893    rtHtml += '<option value="5" id="rt_5">ツイン ()</option>';
894    rtHtml += '<option value="6" id="rt_6">トリプル ()</option>';
895    rtHtml += '<option value="1" id="rt_1">和室 ()</option>';
896    rtHtml += '<option value="2" id="rt_2">和洋室 ()</option>';
897    rtHtml += '<option value="7" id="rt_7">その他 ()</option>';
898    $('#' + rtId).html(rtHtml);
899}
900
901const makeCustomMealCondFormHtml = (mcId) => {
902    let mcHtml = '';
903    mcHtml += '<option value="" id="mc_0">指定なし ()</option>';
904    mcHtml += '<option value="1" id="mc_1">食事なし ()</option>';
905    mcHtml += '<option value="2" id="mc_2">朝食付 ()</option>';
906    mcHtml += '<option value="4" id="mc_4">夕食付 ()</option>';
907    mcHtml += '<option value="3" id="mc_3">朝・夕食付 ()</option>';
908
909    $('#' + mcId).html(mcHtml);
910}
911
912
913const createDateSelectOptionHtml = () => {
914    let html = '';
915    moment.updateLocale ('ja', { weekdays: ["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"], weekdaysShort: ["日","月","火","水","木","金","土"], });
916    for (let i = 0; i < 255; i++) {
917        let now = moment();
918        let nextDay = now.add(i, "days");
919        let dateValue = nextDay.format('YYYYMMDD');
920        let dateLabel = nextDay.format('M'+ '月' + 'D' + '日(' + 'ddd' + ')');
921        html += '<option value="' + dateValue + '">' + dateLabel + '</option>';
922    }
923    return html;
924}
925
926
927$(function() {
928    var $modal = $('.bookNewModal');
929    var flag = "close";
930
931    $('.modalCloseBtn').on('click', function(e) {
932        e.preventDefault();
933        $bookNewBtn.removeClass('active');
934        $modal.removeClass('is_show');
935
936        flag = "close";
937    });
938
939    $('body').on('click touchend', function(event) {
940        if (!$(event.target).closest('#globalNav .wrapper, #gnavBtn, .bookNewBtn, .bookNewModal .bookNew, .ui-corner-all, .mfp-bg, .mfp-gallery, .mfp-arrow').length) {
941            $modal.removeClass('is_show');
942            $(".flatpickr-calendar.inline").hide();
943
944            flag = "close";
945        }
946    });
947
948    $("#checkinCalendar").on('click', function () {
949        changeModalState("open");
950        $("#bookNewModal02").addClass('is_show');
951        $(".flatpickr-calendar.inline").show();
952    });
953
954    //閉じるボタン
955    $('.stayNewModalCloseBtn').on('click', function (e) {
956        $("#bookNewModal02").removeClass('is_show');
957        $(".flatpickr-calendar.inline").hide();
958        changeModalState("close");
959    });
960
961    function changeModalState(newFlag) {
962        flag = newFlag;
963        calFlag = newFlag;
964    }
965
966    let now = moment();
967    let tomorrow = now.add(1, "days");
968
969    if($('#hidden_date_checkin').length > 0 && $('#hidden_date_stay').length){
970        // 存在する場合
971        now = moment($("#hidden_date_checkin").val());
972        tomorrow = moment($("#hidden_date_checkin").val());
973        // 泊数
974        tomorrow = tomorrow.add($("#hidden_date_stay").val(), "days");
975        // 人数再設定
976        changeStayNum();
977    }
978
979    var $cal;
980
981    function calendar( showMonthsNum ) {
982        var dispChangeFlg = false;
983
984        $cal =$(".flatpickrRange").flatpickr({
985            inline: true,
986            showMonths: showMonthsNum,
987            locale: "ja",
988            mode: "range",
989            defaultDate: [now.format('YYYY-MM-DD'), tomorrow.format('YYYY-MM-DD')],
990            minDate: "today",
991            monthSelectorType : 'static',
992            onReady: function(){
993                var checkInDate = now.format('YYYY/MM/DD(ddd)');
994                var checkOutDate = tomorrow.format('YYYY/MM/DD(ddd)');
995                var checkInDateParam = now.format('YYYYMMDD');
996                var checkOutDateParam = tomorrow.format('YYYYMMDD');
997                var stay = tomorrow.diff(now, 'days');
998                var stayNext = stay + 1;
999                var stayText = stay + "泊" + stayNext + "日";
1000                $(".numInputWrapper").append("å¹´");
1001                $("#checkInDateArea").val(checkInDate + ' - ' + checkOutDate + '/' + stayText);
1002                $("#hidden_date_checkin").val(checkInDateParam);
1003                $("#hidden_date_checkout").val(checkOutDateParam);
1004                $("#hidden_date_stay").val(stay);
1005            },
1006            onChange: function(selectedDates, dateStr) {
1007                moment.updateLocale('ja', { weekdays: ["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"], weekdaysShort: ["日","月","火","水","木","金","土"], });
1008                if (dispChangeFlg == false) {
1009                    dispChangeFlg = true;
1010                } else {
1011                    dispChangeFlg = false;
1012                    var checkInM = moment(selectedDates[0]);
1013                    var checkOutM = moment(selectedDates[1]);
1014                    var checkInDateParam = moment(checkInM).format('YYYYMMDD');
1015                    var checkOutDateParam = moment(checkOutM).format('YYYYMMDD');
1016                    var stay = checkOutM.diff(checkInM, 'd');
1017                    var stayNext = stay + 1;
1018                    $("#hidden_date_checkin").val(checkInDateParam);
1019                    $("#hidden_date_checkout").val(checkOutDateParam);
1020                    $("#hidden_date_stay").val(stay);
1021                    $("#sd").val(checkInDateParam);
1022                    $("#sn").val(stay);
1023                    $("#sn").prop('disabled', false);
1024                }
1025            }
1026        });
1027
1028    }
1029    $(".todayBtn").on('click', function() {
1030
1031        now = moment();
1032        tomorrow = moment();
1033        tomorrow = tomorrow.add(1, "days");
1034
1035        $cal.setDate([now.format('YYYY-MM-DD'), tomorrow.format('YYYY-MM-DD')]);
1036        var checkInDate = now.format('MM/DD(ddd)');
1037        var checkOutDate = tomorrow.format('MM/DD(ddd)');
1038        var checkInDateParam = now.format('YYYYMMDD');
1039        var checkOutDateParam = tomorrow.format('YYYYMMDD');
1040
1041        var stay = tomorrow.diff(now, 'days');
1042        var stayNext = stay + 1;
1043        var stayText = stay + "泊" + stayNext + "日";
1044
1045        $("#checkInDateArea").val(checkInDate + ' - ' + checkOutDate);
1046        $("#hidden_date_checkin").val(checkInDateParam);
1047        $("#hidden_date_checkout").val(checkOutDateParam);
1048        $("#hidden_date_stay").val(stay);
1049        $("#sd").val(checkInDateParam);
1050        $("#sn").val(stay);
1051        $("#sn").prop('disabled', false);
1052
1053    });
1054
1055    $(window).on('load resize', function () {
1056        //スマホ・タブレットは処理しない
1057        if (userAgent.indexOf("iPhone") >= 0 || userAgent.indexOf("iPad") >= 0 || userAgent.indexOf("Android") >= 0) {
1058            return;
1059        }
1060        var windowWidth = $(window).width();
1061        var windowSm = 767;
1062        if (windowWidth <= windowSm) {
1063            calendar( 1 )
1064        } else {
1065            calendar( 2 )
1066        }
1067        $('#bookNewModal02').removeClass('is_show');
1068        $(".flatpickr-calendar.inline").hide();
1069    });
1070})
1071
1072const activeSnForm = () => {
1073    const sdForm = document.getElementById('sd');
1074    const snForm = document.getElementById('sn');
1075    snForm.disabled = (sdForm.value == "");
1076}
1077
1078const isDefault = (obj) => {
1079    return Object.keys(obj).length === 0
1080}
1081function jsonp_data(response) {
1082    if (typeof response.count.all !== 'undefined') {
1083        let datacountHtml = '';
1084        datacountHtml += '該当する宿・ホテルが<b>' + response.count.all + '</b>件あります';
1085        $('#datacount').html(datacountHtml);
1086    }
1087}
1088const makeDefaultFormCountSearchResultHtml = (query) => {
1089    $.ajax({
1090        url: API_URL,
1091        type:'GET',
1092        dataType: 'jsonp',
1093        data : query,
1094        jsonpCallback: 'jsonp_data'
1095    }).done(function(response) {
1096        jsonp_data(response);
1097    });
1098}
1099
1100
1101const makeCustomFormCountSearchResultHtml = (query) => {
1102
1103    let datacountId = forcia_var.datacount_id;
1104    if (typeof datacountId !== 'undefined') {
1105        $('#' + datacountId).html('再検索中...');
1106    }
1107
1108    if (typeof forcia_var.rt_id !== 'undefined' ) {
1109        query += '&roomTypeCountFlg=1';
1110    }
1111
1112    if (typeof forcia_var.mc_id !== 'undefined' ) {
1113        query += '&mealTypeCountFlg=1';
1114    }
1115
1116    let countString = forcia_var.count_string;
1117
1118    if (typeof countString === 'undefined') {
1119        countString = function (count) {
1120            return count;
1121        }
1122    }
1123    $.ajax({
1124        url: API_URL,
1125        type:'GET',
1126        dataType: 'jsonp',
1127        data : query,
1128        jsonpCallback: 'jsonp_data',
1129    }).done(function(response) {
1130        const datacountId = forcia_var.datacount_id;
1131        const count = countString(response.count.data_count);
1132        if (typeof datacountId !== 'undefined' && typeof count !== 'undefined' && datacountId.length > 0) {
1133            let datacountHtml = '';
1134            datacountHtml += count;
1135            $('#' + datacountId).html(datacountHtml);
1136        }
1137        if (typeof response.count.room_type  !== 'undefined') {
1138            $("#rt_0").html('<option value="" id="rt_0">指定なし (' + response.count.room_type.rt0 + ')</option>');
1139            $("#rt_3").html('<option value="3" id="rt_3">シングル (' + response.count.room_type.rt3 + ')</option>');
1140            $("#rt_4").html('<option value="4" id="rt_4">ダブル (' + response.count.room_type.rt4 + ')</option>');
1141            $("#rt_5").html('<option value="5" id="rt_5">ツイン (' + response.count.room_type.rt5 + ')</option>');
1142            $("#rt_6").html('<option value="6" id="rt_6">トリプル (' + response.count.room_type.rt6 + ')</option>');
1143            $("#rt_1").html('<option value="1" id="rt_1">和室 (' + response.count.room_type.rt1 + ')</option>');
1144            $("#rt_2").html('<option value="2" id="rt_2">和洋室 (' + response.count.room_type.rt2 + ')</option>');
1145            $("#rt_7").html('<option value="7" id="rt_7">その他 (' + response.count.room_type.rt7 + ')</option>');
1146        }
1147
1148        if (typeof response.count.meal_type  !== 'undefined') {
1149            $("#mc_0").html('<option value="" id="mc_0">指定なし (' + response.count.meal_type.mc0 + ')</option>');
1150            $("#mc_1").html('<option value="1" id="mc_1">食事なし (' + response.count.meal_type.mc1 + ')</option>');
1151            $("#mc_2").html('<option value="2" id="mc_2">朝食付 (' + response.count.meal_type.mc2 + ')</option>');
1152            $("#mc_4").html('<option value="4" id="mc_4">夕食付 (' + response.count.meal_type.mc4 + ')</option>');
1153            $("#mc_3").html('<option value="3" id="mc_3">朝・夕食付 (' + response.count.meal_type.mc3 + ')</option>');
1154
1155        }
1156    });
1157}
1158
1159const makeCustomFormQueryString = () => {
1160    let query = ''
1161
1162    let sdId = forcia_var.sd_id;
1163    if (typeof sdId !== 'undefined' && sdId.length > 0) {
1164        let sdValue = $("#" + sdId).val();
1165        if (sdValue) {
1166            query += '&sd=' + sdValue;
1167        }
1168    }
1169
1170    let snId = forcia_var.sn_id;
1171    if (typeof snId !== 'undefined' && snId.length > 0) {
1172        let snValue = $("#" + snId).val();
1173        if (snValue) {
1174            query += '&sn=' + snValue;
1175        }
1176    }
1177
1178    let cpId = forcia_var.cp_id;
1179    if (typeof cpId !== 'undefined' && cpId.length > 0) {
1180        let cpValue = $("#" + cpId).val();
1181        if (cpValue) {
1182            query += '&cp=' + cpValue;
1183        }
1184    }
1185
1186    let rnId = forcia_var.rn_id;
1187    if (typeof rnId !== 'undefined' && rnId.length > 0) {
1188        let rnValue = $("#" + rnId).val();
1189        if (rnValue) {
1190            query += '&rn=' + rnValue;
1191        }
1192    }
1193
1194    let pnId = forcia_var.pn_id;
1195    if (typeof pnId !== 'undefined' && pnId.length > 0) {
1196        let pnValue = $("#" + pnId).val();
1197        if (pnValue) {
1198            query += '&pn=' + pnValue;
1199        }
1200    }
1201
1202    let pxId = forcia_var.px_id;
1203    if (typeof pxId !== 'undefined' && pxId.length > 0) {
1204        let pxValue = $("#" + pxId).val();
1205        if (pxValue) {
1206            query += '&px=' + pxValue;
1207        }
1208    }
1209
1210    let rtId = forcia_var.rt_id;
1211    if (typeof rtId !== 'undefined' && rtId.length > 0) {
1212        let rtValue = $("#" + rtId).val();
1213        if (rtValue) {
1214            query += '&rt=' + rtValue;
1215        }
1216    }
1217
1218    let mcId = forcia_var.mc_id;
1219    if (typeof mcId !== 'undefined' && mcId.length > 0) {
1220        let mcValue = $("#" + mcId).val();
1221        if (mcValue) {
1222            query += '&mc=' + mcValue;
1223        }
1224    }
1225
1226    let kwId = forcia_var.kw_id;
1227    let bindKeycond = forcia_var.bind_keycond;
1228
1229    if (typeof kwId !== 'undefined' && kwId.length > 0 && bindKeycond == true) {
1230        let kwValue = $("#" + kwId).val();
1231        if (kwValue) {
1232            query += '&kw=' + kwValue;
1233        }
1234    }
1235
1236    let kwtypeId = forcia_var.kwtype_id;
1237
1238    if (typeof kwtypeId !== 'undefined' && kwtypeId.length > 0 && bindKeycond == true) {
1239        let kwtypeValue = $("input[name='kwtype']:checked").val();
1240        if (kwtypeValue) {
1241            query += '&kwtype=' + kwtypeValue;
1242        }
1243    }
1244
1245    let pf = forcia_var.pf;
1246    let ar = forcia_var.ar;
1247    let pfId = forcia_var.pf_id;
1248    let ar1Id = forcia_var.ar1_id;
1249    let ar2Id = forcia_var.ar2_id;
1250
1251    if (typeof pfId !== 'undefined' && typeof ar1Id !== 'undefined' && typeof ar2Id !== 'undefined' && pfId.length > 0 && ar1Id.length > 0 && ar2Id.length > 0) {
1252        let pfIdValue = $("#" + pfId).val();
1253        let ar1IdValue = $("#" + ar1Id).val();
1254        let ar2IdValue = $("#" + ar2Id).val();
1255        if (pfIdValue) {
1256            query += '&pf=' + pfIdValue;
1257            if (ar1IdValue) {
1258                query += '&ar=' + ar1IdValue;
1259                if (ar2IdValue) {
1260                    query += '_' + ar2IdValue;
1261                }
1262            }
1263        } else if (typeof pf !== 'undefined' && pf >= PREF_ID_MIN && pf <= PREF_ID_MAX) {
1264            // 初期値が設定されている場合、クエリ文字列に追加
1265            query += '&pf=' + pf;
1266            if (typeof ar !== 'undefined' && ar.length > 0) {
1267                query += '&ar=' + ar;
1268            }
1269        }
1270    }
1271
1272    query = query.slice(1);
1273
1274    return query;
1275}

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.