PageSourceSearch

http://kurobe-sunvalley.com/static/js/calculation.js

js kurobe-sunvalley.com collected 2026-10-07 00:39:31 UTC 36,843 bytes, 898 lines download raw bytes

1(function(DYNns, $, _, undefined) {
2    "use strict";
3    DYNns.$ = $;
4    DYNns._ = _;
5
6    DYNns.render = {
7        get: function(tmplName) {
8            var that = this;
9            if (_.isUndefined(that.tmplCache)) {
10                that.tmplCache = {};
11            }
12            if (_.isUndefined(that.tmplCache[tmplName])) {
13//              var tmplUrl = (DYNns.System.UNITTEST ? ".." : ".") + "/src/dynviews/" + tmplName + ".html";
14                var tmplUrl = directurl + "src/dynviews/" + tmplName + ".html";
15                var tmplString;
16                $.ajax({
17                    url: tmplUrl,
18                    method: "GET",
19                    async: false,
20                    dataType: "html",
21                    success: function(data) {
22                        tmplString = data;
23                    }
24                });
25                that.tmplCache[tmplName] = tmplString;
26            }
27            return that.tmplCache[tmplName];
28        },
29        tmplCache: {}
30    };
31
32    DYNns.setValArray = function(value) { // 配列でない項目を単一要素の配列に変換
33        if (!_.isArray(value)) return [value];
34        return value;
35    };
36
37    DYNns.setTabToPanel = function(tabs, onDispError) { // tabをpanelに紐づけ
38        if (_.isUndefined(onDispError)) onDispError = true;
39        tabs = DYNns.setValArray(tabs);
40        return _.map(tabs, function(tabvalue, tabcount) {
41            if (_.isObject(tabvalue)) return tabvalue;
42            var retrunTab;
43            _.forEach(DYNns.tabset, function(tab, tabname) {
44                if (tabname === tabvalue) retrunTab = $.extend({}, tab);
45            });
46            if (_.isUndefined(retrunTab) && onDispError) DYNns.ErrorTextDisplay("ERROR:" + tabvalue + "タブが見つかりません");
47            return retrunTab;
48        });
49    };
50
51    DYNns.setWordsToTab = function(words, onDispError) { // wordsをtabに紐づけ
52        if (_.isUndefined(onDispError)) onDispError = true;
53        if (_.isObject(words)) return words;
54        var retrunWords;
55        _.forEach(DYNns.wordset, function(wordset, wordsname) {
56            if (words === wordsname) retrunWords = $.extend({}, wordset);
57        });
58        if (_.isUndefined(retrunWords) && onDispError) DYNns.ErrorTextDisplay("ERROR:テキストセット" + words + "が見つかりません");
59        return retrunWords;
60    };
61
62    DYNns.setupDateRange = function(objTab) { //日付の初期設定
63        var today = new Date();
64        var aYearLater = new Date(today.getFullYear() + 1, today.getMonth(), today.getDate() - 1);
65        objTab.startDate = DYNns.copyDate(today, objTab.sts.bookingDate.defaultStayDate);
66        objTab.endDate = DYNns.copyDate(objTab.startDate, objTab.sts.bookingDate.datelimit);
67        if (objTab.sts.nowdisp.WBFplan && objTab.sts.bookingDate.defaultStayDate < 3) objTab.startDate = DYNns.copyDate(today, 3);
68        if (objTab.endDate > aYearLater) objTab.endDate = DYNns.copyDate(aYearLater);
69        objTab.startday = DYNns.copyDate(objTab.startDate);
70        objTab.startday = DYNns.normalizationDate(objTab, objTab.startday);
71    };
72
73    DYNns.normalizationDate = function(objTab, setday) { // 日数データの調整
74        setday = setday || new Date();
75        if (setday < objTab.startDate) setday = DYNns.copyDate(objTab.startDate);
76        if (setday > objTab.endDate) setday = DYNns.copyDate(objTab.endDate);
77        return setday;
78    };
79
80    DYNns.copyDate = function(setday, plusday) { // 日数データのコピー
81        plusday = plusday || 0;
82        return new Date(setday.getFullYear(), setday.getMonth(), setday.getDate() + plusday);
83    };
84
85    //現在表示している日時を取得
86    DYNns.getTabDate = function(objPanel) {
87        DYNns.pushTabDate(objPanel);
88        return DYNns.copyDate(objPanel.sts.date);
89    };
90
91    DYNns.setupCalendar = function(objPanel) { // カレンダーのセットアップ
92        DYNns.getHoliday();
93        var objTab = objPanel.tabs[objPanel.nowTab];
94        objPanel.cal = new DYNns.JKL.Calendar("dynCalendar", "dynSearch", "hidSELECTARRYMD", objPanel.i
94dSuffix);
95        objPanel.cal.min_date = DYNns.copyDate(objTab.startday); // スタート日
96        objPanel.cal.max_date = DYNns.copyDate(objTab.endDate); // ラスト日指定
97        if (!_.isUndefined(objTab.words.calender)) objPanel.cal.wordsset = objTab.words.calender; // 表記指定
98    };
99
100    //日数設定項目を表示
101    DYNns.setupSelectDate = {
102        get: function(objTab, setday) {
103            var that = this;
104            setday = setday || DYNns.copyDate(objTab.startday);
105            setday = DYNns.normalizationDate(objTab, setday);
106            var compiled = _.map(that.set, function(setdate) {
107                setdate.valueset = setdate.getValueset(objTab, setday);
108                setdate.bookingDatePunctuation = setdate.and(objTab);
109                $(objTab.formid + " ." + setdate.classname).attr("type", "hidden");
110                return _.template("<select class='<%-classname%> style_inputArea'>" +
111                    "<% _.forEach(valueset,function(value){ %>" +
112                    "<option value='<%-value%>'><%-value%></option>" +
113                    "<% })%></select><%=bookingDatePunctuation%>")(setdate);
114            });
115            $(objTab.formid + " .dynDate").html(compiled);
116            _.forEach(that.set, function(setdate) {
117                $(objTab.formid + " ." + setdate.classname).val("" + setdate.getSelected(setday));
118                if (that.terms(objTab) && setdate.classname === "cmbARRY") $(objTab.formid + " ." + setdate.classname).css("display", "none");
119            });
120            that.push(objTab);
121            if (objTab.sts.nowdisp.year) $(objTab.formid + " .cmbARRY").after(_.template("<%=bookingDatePunctuation%>")(objTab.words));
122        },
123        push: function(objTab) {
124            var selectY = $(objTab.formid + " .cmbARRY");
125            var selectM = $(objTab.formid + " .cmbARRM");
126            var selectD = $(objTab.formid + " .cmbARRD");
127            var startYear = objTab.startDate.getFullYear();
128            var startMonth = objTab.startDate.getMonth() + 1;
129            var endYear = objTab.endDate.getFullYear();
130            var endMonth = objTab.endDate.getMonth() + 1;
131            var setday = new Date(selectY.val(), selectM.val() - 1, selectD.val());
132
133            if (selectD.val() > DYNns.checkDate.get(setday)) selectD.val(DYNns.checkDate.get(setday));
134            if (this.terms(objTab) && startYear + 1 === endYear && startMonth > endMonth) {
135                if (selectM.val() >= startMonth) selectY.val(startYear);
136                if (selectM.val() <= endMonth) selectY.val(endYear);
137            }
138        },
139        terms: function(objTab) {
140            return !objTab.sts.nowdisp.year;
141        },
142        set: [{
143            classname: "cmbARRY",
144            and: function() {
145                return "";
146            },
147            getSelected: function(setday) {
148                return setday.getFullYear();
149            },
150            getValueset: function(objTab) {
151                return DYNns.getArray(this.getSelected(objTab.startDate), this.getSelected(objTab.endDate));
152            }
153        }, {
154            classname: "cmbARRM",
155            and: function(objTab) {
156                return objTab.words.bookingDatePunctuation;
157            },
158            getSelected: function(setday) {
159                return setday.getMonth() + 1;
160            },
161            getValueset: function(objTab, setday) {
162                var boolyear = objTab.sts.nowdisp.year;
163                var startYear = objTab.startDate.getFullYear();
164                var endYear = objTab.endDate.getFullYear();
165                var setYear = setday.getFullYear();
166                var startMonth = 1;
167                var endMonth = 12;
168
169                if (setYear === startYear || !boolyear) startMonth = this.getSelected(objTab.startDate);
170                if (setYear === endYear || !boolyear) endMonth = this.getSelected(objTab.endDate);
171                if (!boolyear) {
172                    if (startYear + 1 === endYear && startMonth > endMonth) return _(DYNns.getArray(startMonth, 12)).concat(DYNns.getArray(1, endMonth)).value(
172);
173                    if (startYear < endYear) return DYNns.getArray(1, 12);
174                }
175                return DYNns.getArray(startMonth, endMonth);
176            }
177        }, {
178            classname: "cmbARRD",
179            and: function() {
180                return "";
181            },
182            getSelected: function(setday) {
183                return setday.getDate();
184            },
185            getValueset: function(objTab, setday) {
186                var startYear = objTab.startDate.getFullYear();
187                var startMonth = objTab.startDate.getMonth() + 1;
188                var endYear = objTab.endDate.getFullYear();
189                var endMonth = objTab.endDate.getMonth() + 1;
190                var setYear = setday.getFullYear();
191                var setMonth = setday.getMonth() + 1;
192                var startDay = 1;
193                var endDay = DYNns.checkDate.get(setday);
194
195                if (setYear === startYear && setMonth === startMonth) startDay = this.getSelected(objTab.startDate);
196                if (setYear === endYear && setMonth === endMonth) endDay = this.getSelected(objTab.endDate);
197                return DYNns.getArray(startDay, endDay);
198            }
199        }]
200    };
201
202    //日時データから上限日数を返す
203    DYNns.checkDate = {
204        get: function(checkdate) {
205            var year = checkdate.getFullYear();
206            var objMonth = this.set[checkdate.getMonth()]; //何月ですか
207            if (_.isUndefined(objMonth.leap)) return objMonth.nomal; //閏年に日数変わりますか
208            if (year % 400 === 0) return objMonth.leap; //年が400で割り切れますか
209            if (year % 100 === 0) return objMonth.nomal; //年が100で割り切れますか
210            if (year % 4 === 0) return objMonth.leap; //年が4で割り切れますか
211            return objMonth.nomal; //いつもの二月
212        },
213        set: [
214            { nomal: 31 }, //1月
215            { nomal: 28, leap: 29 }, //2月
216            { nomal: 31 }, //3月
217            { nomal: 30 }, //4月
218            { nomal: 31 }, //5月
219            { nomal: 30 }, //6月
220            { nomal: 31 }, //7月
221            { nomal: 31 }, //8月
222            { nomal: 30 }, //9月
223            { nomal: 31 }, //10月
224            { nomal: 30 }, //11月
225            { nomal: 31 } //12月
226        ]
227    };
228
229    DYNns.getHoliday = function() {
230        DYNns.holiday = [];
231        var date = new Date();
232        var endDate = new Date(date.getFullYear(), date.getMonth() + 13, 1); // 13か月後
233
234        // フォーマット
235        var startM = date.getMonth() + 1;
236        if (startM < 10) startM = "0" + startM;
237
238        var start = date.getFullYear() + "-" + startM + "-01"; // 今月から
239
240        $.ajax({
241            url: "https://asp.hotel-story.ne.jp/API/jp-holidays.js",
242            type: "GET",
243            dataType: "jsonp",
244            scriptCharset: "utf-8",
245            timeout: 5000,
246            jsonpCallback: "callback",
247            success: function(data) {
248                var regEsc = /\//g,
249                    regDate = /-/g;
250
251                for (var key in data) {
252                    if (start <= key.replace(regEsc, "-")) {
253                        DYNns.holiday.push(key.replace(regDate, "/"));
254                    }
255                }
256                DYNns.holiday.sort();
257            },
258            error: function(data) {},
259            complete: function(data) {}
260        });
261    };
262
263    //泊室数選択肢の生成
264    DYNns.setupNightsRooms = function(selecter, objSelect) {
265        var arrSelects = DYNns.getArray(1, objSelect.max);
266
267        var compiled = _.map(arrSelects, function(select) {
268            return _.template("<option value='<%-value%>'><%-value%></option>")({ value: select });
269        });
270
271        $(selecter).append(compiled).val(objSelect.selected);
272    };
273
274    //onだとかoffだとかをtrue/falseに切り替え&よくわからんものはtrueに
275    DYNns.setupBinary = function(textBinary) {
276        if (!textBinary) return false;
277        if (textBinary == "on") return true;
278        if (textBinary == "off") return false;
279        if (textBinary === true || textBinary === false) return textBinary;
280        return true;
281    };
282
283    //tabを表示
284    DYNns.setupTabs = function(objPanel) {
285        var compiled = _.map(objPanel.tabs, function(tab) {
286            tab.tabname = tab.tabname || tab.words.tabname;
287            return _.template("<li class='style_topicPathTabsList'><a href='javascript:void(0);' class='Tab<%-thisTabNum%> style_topicPathTabsLink current' ><%=tabname%></a></li>")(tab);
288        });
289
290        $(objPanel.formid + " .topicPathTabs ul").append(compiled);
291    };
292
293    //group検索を表示
294    DYNns.setupGroups = function(objTab) {
295        var arrGroup;
296        if (DYNns.getGroupsMode(objTab) === 2) {
297            arrGroup = objTab.sts.selectArea;
298        } else if (DYNns.getGroupsMode(objTab) === 1) {
299            arrGroup = _.map(objTab.sts.hdata, function(hcod) {
300                return { name: hcod.name, value: hcod.hcod1 + "," + hcod.hcod2 };
301            });
302        } else {
303            return false;
304        }
305        var compiled = _.map(arrGroup, function(arrGroup) {
306            if (!_.isUndefined(arrGroup)) return _.template("<option value='<%-value%>'><%-name%></option>")(arrGroup);
307        });
308        $(objTab.formid + " .selectGroup").append(compiled).val(arrGroup[0].value);
309    };
310
311    //groupのモードを表示
312    DYNns.getGroupsMode = function(objTab) {
313        if (!_.isUndefined(objTab.sts.selectArea) && _.size(objTab.sts.selectArea) > 0 && objTab.sts.nowdisp.area) return 2;
314        if (_.size(objTab.sts.hdata) > 1) return 1;
315        return 0;
316    };
317
318    //各項目を生成
319    DYNns.setupBrocks = {
320        set: function(objTab, file, classname, sts) {
321            sts = sts || "truebox";
322            this.compiled[file] = this.compiled[file] || _.template(DYNns.render.get(file));
323            if ($(objTab.formid + " ." + classname).css("display") !== "none") this.displaylist[classname] = $(objTab.formid + " ." + classname).css("display");
324            if (objTab.sts.olddisp[sts] !== objTab.sts.nowdisp[sts]) {
325                $(objTab.formid + " ." + classname).html("");
326                $(objTab.formid + " ." + classname).css("display", "none");
327            }
328            if (objTab.sts.nowdisp[sts]) {
329                $(objTab.formid + " ." + classname).html(this.compiled[file](objTab.words));
330                $(objTab.formid + " ." + classname).css("display", this.displaylist[classname]);
331            }
332        },
333        compiled: {},
334        displaylist: {}
335    };
336
337    //人数項目を表示
338    DYNns.setupPersons = function(objTab) {
339        var minPsn;
340        var persons = _.forEach(objTab.sts.persons, function(person, i) {
341            person.name = person.name || objTab.words.personsNameList[i];
342            minPsn = 0;
343            if (i === 0) minPsn = 1;
344            person.personsNumber = objTab.words.personsNumber;
345            person.values = DYNns.getArray(minPsn, person.maxPsn);
346            person.classname = "cmbPerson0" + i;
347            person.startPsn = person.startPsn || minPsn;
348        });
349        var countmap = 0;
350        var compiled = _.map(persons, function(person) {
351            if (countmap++ > 0 && objTab.sts.submit.plan === 2) return false;
352            return _.template("<%-name%> : <select class='<%-classname%> style_inputArea'>" +
353                "<% _.forEach(values,function(value){ %>" +
354                "<option value='<%-value%>' <%if(startPsn===value){%>selected<%}%> ><%-value%></option>" +
355                "<% })%></select><%=personsNumber%>")(person);
356        });
357
358        //$(objTab.formid + " .dynPersons").append(compiled);
359		//$(objTab.formid + " .bookingNights .lbchkpsn").before(compiled);
360		$(objTab.formid + " .dynPersons .lbchkpsn").before(compiled);
361    };
362    
363   
364
365    //よさん項目を表示
366    DYNns.setupBudget = {
367        get: function(selecter, objBudget, objTab, min0max1num) {
368            var selected;
369            min0max1num = min0max1num || 0;
370            if (min0max1num === 0) objBudget.start = objBudget.start || objBudget.min;
371            if (min0max1num === 1) objBudget.start = objBudget.start || objBudget.max;
372            var arrPrices = _.map(_.filter(this.set[min0max1num], function(plice) {
373                    return (objBudget.min <= plice && plice <= objBudget.max);
374                }),
375                function(budget) {
376                    if (_.isUndefined(selected) || Math.abs(budget - objBudget.start) < Math.abs(selected - objBudget.start)) selected = budget;
377                    return {
378                        value: budget,
379                        display: DYNns.getPrice(budget, objTab)
380                    };
381                });
382            var compiled = _.map(arrPrices, function(arrPrice) {
383                if (arrPrice) return _.template("<option value='<%-value%>'><%-display%></option>")(arrPrice);
384            });
385            $(selecter).append(compiled).val(selected);
386        },
387        set: [
388            [0, 5000, 6000, 7000, 8000, 9000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000],
389            [8000, 10000, 11000, 12000, 13000, 14000, 15000, 20000, 25000, 30000, 35000, 40000, 50000, 60000, 70000, 80000, 90000, 100000, 110000, 120000, 130000, 140000, 150000, 9999999]
390        ]
391    };
392
393    DYNns.getPrice = function(price, objTab) {
394        switch (price) {
395            case 0:
396                return objTab.words.priceLowestNothing;
397            case 9999999:
398                return objTab.words.priceMaximumNothing;
399            default:
400                return price.toString();
401        }
402    };
403
404    //プランカテゴリ系統の選択肢項目を表示
405    DYNns.setupCategory = {
406        set: function(objTab) {
407            var that = this;
408            _.forEach(objTab.sts.category, function(categoryarray, categoryname) {
409                if (that.get[categoryname].display(objTab)) {
410                    var compiled = _.map(categoryarray, function(category) {
411                        if (!_.isUndefined(category)) return _.template("<option value='<%-value%>'><%-name%></option>")(category);
412                    });
413                    $(objTab.formid + " ." + that.get[categoryname].classname).append(compiled).val(categoryarray[0].value);
414                }
415            });
416        },
417        get: {
418            booking: {
419                classname: "CategoryBooking",
420                display: function(objTab) {
421                    return objTab.sts.nowdisp.categorybooking;
422                }
423            },
424            room: {
425                classname: "CategoryRoom",
426                display: function(objTab) {
427                    return objTab.sts.nowdisp.categoryroom;
428                }
429            },
430            roomType: {
431                classname: "CategoryRoomType",
432                display: function(objTab) {
433                    return objTab.sts.nowdisp.categoryroomtype;
434                }
435            }
436        }
437    };
438
439    //PC・スマートフォン判別
440    DYNns.getAdressMode = function(objTab, width) {
441        width = width || $(window).width();
442        if (objTab.sts.submit.address === 1 || objTab.sts.submit.address === 0) return objTab.sts.submit.address;
443
444        if (width <= objTab.sts.submit.width && DYNns.checkKtai()) return 1;
445        return 0;
446    };
447
448    //キャリア判定
449    DYNns.checkKtai = function() {
450        var userAgent = navigator.userAgent;
451        switch (true) {
452            case userAgent.indexOf("DoCoMo/") >= 0:
453                switch (true) {
454                    case userAgent.indexOf("501i") >= 0:
455                    case userAgent.indexOf("502i") >= 0:
456                    case userAgent.indexOf("821i") >= 0:
457                    case userAgent.indexOf("209i") >= 0:
458                    case userAgent.indexOf("651ps") >= 0:
459                    case userAgent.indexOf("691i") >= 0:
460                    case userAgent.indexOf("671i") >= 0:
461                    case userAgent.indexOf("F210i") >= 0:
462                    case userAgent.indexOf("N210i") >= 0:
463                    case userAgent.indexOf("P210i") >= 0:
464                    case userAgent.indexOf("KO210i") >= 0:
465                        return false;
466                    default:
467                        return true;
468                }
469                return false;
470            case userAgent.indexOf("J-PHONE/") >= 0:
471                switch (true) {
472                    case userAgent.indexOf("/J-P03") >= 0:
473                    case userAgent.indexOf("/J-P04") >= 0:
474                    case userAgent.indexOf("/J-P02") >= 0:
475                    case userAgent.indexOf("/J-SH03") >= 0:
476                    case userAgent.indexOf("/J-SA02") >= 0:
477                    case userAgent.indexOf("/J-DN02") >= 0:
478                    case userAgent.indexOf("/J-SH02") >= 0:
479                    case userAgent.indexOf("J-PHONE/1.") >= 0:
480                    case userAgent.indexOf("J-PHONE/2.") >= 0:
481                    case userAgent.indexOf("J-PHONE/3.") >= 0:
482                        return false;
483                    default:
484                        return true;
485                }
486                return false;
487            case userAgent.indexOf("Android") >= 0:
488            case userAgent.indexOf("Vodafone/") >= 0:
489            case userAgent.indexOf("SoftBank/") >= 0:
490            case userAgent.indexOf("iPhone") >= 0:
491            case userAgent.indexOf("iPad") >= 0:
492            case userAgent.indexOf("WILLCOM") >= 0:
493            case userAgent.indexOf("mobilephone/") >= 0:
494            case userAgent.indexOf("UP.Browser") >= 0:
495                return true;
496        }
497        return false;
498    };
499
500
501    //表示・非表示自動設定
502    DYNns.autoSetupDisplay = {
503        set: function(objTab) {
504            var that = this;
505            objTab.sts.nowdisp = $.extend({}, objTab.sts.display);
506            _.forEach(that.get, function(value, name) {
507                if (value.conditions(objTab)) {
508                    _.forEach(value.bool, function(bool, key) {
509                        objTab.sts.nowdisp[key] = bool;
510                    });
511                }
512            });
513        },
514        get: {
515            //デフォルト
516            Default: {
517                conditions: function(objTab) {
518                    return true;
519                },
520                bool: { truebox: true }
521            },
522            //年表示
523            year: {
524                conditions: function(objTab) {
525                    return _.isUndefined(objTab.sts.nowdisp.year);
526                },
527                bool: { year: true }
528            },
529            //タブ表示自動true
530            tabon: {
531                conditions: function(objTab) {
532                    if (!_.isUndefined(objTab.sts.nowdisp.tabs)) return false;
533                    if (_.size(objTab.objPanel.tabs) > 1) return true;
534                    if (_.size(DYNns.panelset) > 1) return true;
535                    return false;
536                },
537                bool: { tabs: true }
538            },
539            //タブ表示デフォルト
540            taboff: {
541                conditions: function(objTab) {
542                    return _.isUndefined(objTab.sts.nowdisp.tabs);
543                },
544                bool: { tabs: false }
545            },
546            //航空券付プラン無し
547            NoDP: {
548                conditions: function(objTab) {
549                    if (_.isUndefined(objTab.sts.WBFURL)) return true;
550                    if (objTab.sts.WBFURL == "") return true;
551                    return false;
552                },
553                bool: { WBFplan: false }
554            },
555            //エリア検索無し
556            NoArea: {
557                conditions: function(objTab) {
558                    return DYNns.getGroupsMode(objTab) !== 2;
559                },
560                bool: { area: false }
561            },
562            //予算設定無し
563            NoBudgets: {
564                conditions: function(objTab) {
565                    if (_.isUndefined(objTab.sts.budgets)) return true;
566                    if (_.isUndefined(objTab.sts.budgets.min)) return true;
567                    if (_.isUndefined(objTab.sts.budgets.max)) return true;
568                    return false;
569                },
570                bool: { budgets: false }
571            },
572            //プランカテゴリ選択無し
573            NoCategorybooking: {
574                conditions: function(objTab) {
575                    if (_.isUndefined(objTab.sts.category)) return true;
576                    if (_.isUndefined(objTab.sts.category.booking)) return true;
577                    if (_.size(objTab.sts.category.booking) <= 0) return true;
578                    return false;
579                },
580                bool: { categorybooking: false }
581            },
582            //部屋カテゴリ選択無し
583            NoCategoryroom: {
584                conditions: function(objTab) {
585                    if (_.isUndefined(objTab.sts.category)) return true;
586                    if (_.isUndefined(objTab.sts.category.room)) return true;
587                    if (_.size(objTab.sts.category.room) <= 0) return true;
588                    return false;
589                },
590                bool: { categoryroom: false }
591            },
592            //部屋タイプ選択無し
593            NoCategoryroomtype: {
594                conditions: function(objTab) {
595                    if (_.isUndefined(objTab.sts.category)) return true;
596                    if (_.isUndefined(objTab.sts.category.roomType)) return true;
597                    if (_.size(objTab.sts.category.roomType) <= 0) return true;
598                    return false;
599                },
600                bool: { categoryroomtype: false }
601            },
602            //泊数選択無し
603            NoNights: {
604                conditions: function(objTab) {
605                    return _.isUndefined(objTab.sts.bookingDate.nights);
606                },
607                bool: { nights: false }
608            },
609            //室数選択無し
610            NoRooms: {
611                conditions: function(objTab) {
612                    return _.isUndefined(objTab.sts.bookingDate.rooms);
613                },
614                bool: { rooms: false }
615            },
616            //レストラン版
617            restaurant: {
618                conditions: function(objTab) {
619                    return objTab.sts.submit.plan === 2;
620                },
621                bool: {
622                    WBFplan: false,
623                    nights: false,
624                    budgets: false,
625                    dispunitRoom: false,
626                    categoryroom: false,
627                    categoryroomtype: false
628                }
629            },
630            //携帯版
631            ktai: {
632                conditions: function(objTab) {
633                    return DYNns.getAdressMode(objTab) === 1;
634                },
635                bool: {
636                    WBFplan: false,
637                    chkymd: false,
638                    chkpsn: false,
639                    budgets: false,
640                    categorybooking: false,
641                    categoryroom: false,
642                    categoryroomtype: false,
643                    dispunitPlan: false,
644                    dispunitRoom: false,
645                    dispunitCalendar: false
646                }
647            },
648            //携帯宿泊版
649            ktaiLodging: {
650                conditions: function(objTab) {
651                    if (DYNns.getAdressMode(objTab) !== 1) return false;
652                    if (objTab.sts.submit.plan === 2) return false;
653                    return true;
654                },
655                bool: {
656                    area: false,
657                    year: false
658                }
659            },
660            //航空券付プランあり
661            DP: {
662                conditions: function(objTab) {
663                    return objTab.sts.nowdisp.WBFplan;
664                },
665                bool: {
666                    chkymd: false, //日程未定
667                    chkpsn: false, //人数未定
668                    dispunitRoom: false, //検索モード:お部屋タイプ
669                    dispunitCalendar: false //検索モード:空室カレンダー
670                }
671            },
672            //グループ検索有
673            Group: {
674                conditions: function(objTab) {
675                    return DYNns.getGroupsMode(objTab) > 0;
676                },
677                bool: { group: true }
678            },
679            //グループ検索無し
680            NoGroup: {
681                conditions: function(objTab) {
682                    return DYNns.getGroupsMode(objTab) === 0;
683                },
684                bool: { group: false }
685            }
686        }
687    };
688
689    //宿泊日に日付をセット
690    DYNns.pullDate = function(objPanel, setDate) {
691        setDate = setDate || DYNns.copyDate(objPanel.sts.date);
692        setDate = DYNns.normalizationDate(objPanel.tabs[objPanel.nowTab], setDate);
693        if (!objPanel.tabs[objPanel.nowTab].sts.bookingDate.usecalendar) DYNns.setupSelectDate.get(objPanel.tabs[objPanel.nowTab], setDate);
694        $(objPanel.formid + " .cmbARRY").val(setDate.getFullYear());
695        $(objPanel.formid + " .cmbARRM").val(setDate.getMonth() + 1);
696        $(objPanel.formid + " .cmbARRD").val(setDate.getDate());
697    };
698
699    //日付未定をセット
700    DYNns.pullChkymd = function(objPanel, setChkymd) {
701        setChkymd = setChkymd || objPanel.sts.chkymd;
702        if ($(objPanel.formid + " .chkymd").length > 0) $(objPanel.formid + " .chkymd").prop("checked", setChkymd);
703    };
704
705    //人数未定をセット
706    DYNns.pullChkpsn = function(objPanel, setChkpsn) {
707        setChkpsn = setChkpsn || objPanel.sts.chkpsn;
708        if ($(objPanel.formid + " .chkpsn").length > 0) $(objPanel.formid + " .chkpsn").prop("checked", setChkpsn);
709    };
710
711    //検索モードをセット
712    DYNns.pullDispunit = function(objPanel, setdispunit) {
713        setdispunit = setdispunit || objPanel.sts.dispunit;
714        if ($(objPanel.formid + " ." + setdispunit).length <= 0) {
715            DYNns.setupTabDispunit(objPanel);
716            DYNns.pushTabDispunit(objPanel);
717        } else {
718            $(objPanel.formid + " .dynDispunit [name=dispUnit]").prop("checked", false);
719            $(objPanel.formid + " ." + setdispunit).prop("checked", true);
720        }
721    };
722
723    //検索モードのチェック状態初期化
724    DYNns.setupTabDispunit = function(objPanel) {
725        var DefaultCheck = objPanel.tabs[objPanel.nowTab].sts.defaultDispunit;
726        var jQobjDispPlan = $(objPanel.formid + " .dispPlan");
727        var jQobjDispRoom = $(objPanel.formid + " .dispRoom");
728        var jQobjDispCalender = $(objPanel.formid + " .dispCald");
729        if (DefaultCheck !== 0 && DefaultCheck !== 1 && DefaultCheck !== 2) {
730            if (jQobjDispCalender.length > 0) DefaultCheck = 2;
731            if (jQobjDispRoom.length > 0) DefaultCheck = 1;
732            if (jQobjDispPlan.length > 0) DefaultCheck = 0;
733        }
734        if (DefaultCheck === 2) jQobjDispCalender.prop("checked", true);
735        if (DefaultCheck === 1) jQobjDispRoom.prop("checked", true);
736        if (DefaultCheck === 0) jQobjDispPlan.prop("checked", true);
737    };
738
739    //現在表示している日時を保存
740    DYNns.pushTabDate = function(objPanel) {
741        objPanel.sts.date = new Date(
742            $(objPanel.formid + " .cmbARRY").val() + "/" +
743            $(objPanel.formid + " .cmbARRM").val() + "/" +
744            $(objPanel.formid + " .cmbARRD").val());
745        objPanel.sts.date = DYNns.normalizationDate(objPanel.tabs[objPanel.nowTab], objPanel.sts.date);
746    };
747
748    //日付未定を保存
749    DYNns.pushTabChkymd = function(objPanel) {
750        if ($(objPanel.formid + " .chkymd").length > 0) objPanel.sts.chkymd = $(objPanel.formid + " .chkymd").prop("checked");
751    };
752
753    //人数未定を保存
754    DYNns.pushTabChkpsn = function(objPanel) {
755        if ($(objPanel.formid + " .chkpsn").length > 0) objPanel.sts.chkpsn = $(objPanel.formid + " .chkpsn").prop("checked");
756    };
757
758    //検索モードとして選択された要素のidを保存
759    DYNns.pushTabDispunit = function(objPanel) {
760        objPanel.sts.dispunit = $(objPanel.formid + " .dynDispunit [name=dispUnit]:checked").attr("class");
761    };
762
763    //エラー時の表示
764    DYNns.ErrorTextDisplay = function(ErrText, key) {
765        console.error(ErrText);
766        key = key || null;
767        if (!_.isNull(key) && $("#dynSearch" + key).length > 0) {
768            $("#dynSearch" + key + ":first").before("<div>" + ErrText + "</div>");
769        } else if ($("[id^=dynSearch]").length > 0) {
770            $("[id^=dynSearch]:first").before("<div>" + ErrText + "</div>");
771        } else if ($("html").length > 0) {
772            $("html:first").before("<div>" + ErrText + "</div>");
773        } else {
774            alert(ErrText);
775        }
776    };
777
778    DYNns.getCurrencyUnitPre = function(currencyCode) {
779        switch (currencyCode) {
780            case "01":
781                return "ï¿¥";
782            case "02":
783                return "$";
784            case "03":
785                return "";
786            case "04":
787                return "";
788            case "05":
789                return "";
790            case "06":
791                return "NT$ ";
792            case "07":
793                return "Rs ";
794            case "08":
795                return "";
796            case "MA":
797                return "";
798            default:
799                return "";
800        }
801    };
802
803    DYNns.GetCurrencyUnit = function(currencyCode) {
804        switch (currencyCode) {
805            case "01":
806                return "";
807            case "02":
808                return "";
809            case "03":
810                return " 元";
811            case "04":
812                return " 元";
813            case "05":
814                return " KRW";
815            case "06":
816                return "";
817            case "07":
818                return "";
819            case "08":
820                return " Baht";
821            case "MA":
822                return " 枚";
823            default:
824                return "";
825        }
826    };
827
828    DYNns.dollarFormat = function(price) {
829        var s = "" + price;
830        var p = s.indexOf(".");
831
832        if (p === -1) {
833            return price + ".00";
834        } else if (s.length - p === 2) {
835            return price + "0";
836        } else {
837            return price;
838        }
839    };
840    DYNns.validForm = function() {
841        return true;
842    };
843
844    //startからendまでの連番の配列作る
845    DYNns.getArray = function arr(start, end, array) {
846        array = array || [];
847        if (array.length === Math.abs(end - start) + 1) return array;
848        var sign = 1;
849        if (end - start !== 0) sign = (end - start) / Math.abs(end - start);
850        array.push(start + array.length * sign);
851        return arr(start, end, array);
852    };
853
854    //出発空港・到着空港一覧取得
855    DYNns.getAirPortJsonp = {
856        get: function(objTab) {
857            var that = this;
858            if (objTab.sts.nowdisp.WBFplan) { that.ajax(objTab); }
859        },
860        ajax: function(objTab) {
861            var that = this;
862            var url = objTab.sts.WBFURL;
863            if (!that.list[url]) {
864                $.ajax({
865                    async: false,
866                    method: "GET",
867                    scriptCharset: "utf-8",
868                    url: url,
869                    dataType: "jsonp",
870                    jsonpCallback: "SetAirportInformation",
871
872                    success: function(jsonp) {
873                        console.log(objTab, jsonp);
874                        that.list[url] = jsonp;
875                        that.set(objTab);
876                    },
877                    error: function() {
878                        that.ajax(objTab);
879                    }
880                });
881            } else {
882                that.set(objTab);
883            }
884        },
885        set: function(objTab) {
886            var that = this;
887            var url = objTab.sts.WBFURL;
888            _.forEach(that.list[url].airport[0].dep, function(dep, depcount) {
889                $(objTab.formid + " .DepartureAirPort").append("<option value='" + dep.code + "'>" + dep.name + "</option>");
890            });
891            _.forEach(that.list[url].airport[0].arr, function(arr, arrcount) {
892                $(objTab.formid + " .ArrivalAirPort").append("<option value='" + arr.code + "'>" + arr.name + "</option>");
893            });
894        },
895        list: {}
896    };
897
898}(window.DYNns = window.DYNns || {}, jQuery, _));

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.