PageSourceSearch

https://www.orion-tour.co.jp/wp-content/themes/orion/js/search/ski/jquery.stella_air.js

js orion-tour.co.jp collected 2026-09-24 22:26:42 UTC 20,878 bytes, 607 lines download raw bytes

1$(function() {
2
3  var jsonObj;
4
5    $('#ski-02 form#searchForm').submit(function(e) {
6        e.preventDefault();
7        //----泊数追加ここから----
8        var Days = $('#ski-02 [name=Days]').val();
9        var Night = Days - 1;
10        if(Days==''){
11          Night = '';
12        }
13        $('#ski-02 input[name=Night]').val(Night);
14        //----泊数追加ここまで----
15        // 出発日を指定しない場合がないので廃止
16        /*if ($("#CalendarNoDate:checkbox").attr("checked")) {
17            $('select[name=DeptYear]').val("");
18            $('select[name=DeptMonth]').val("");
19            $('select[name=DeptDay]').val("");
20        }*/
21        var deptDate = $('#ski-02 input[name=DeptDate]').val();
22        var deptDateDisabled = $('#ski-02 input[name=DeptDateDisabled]').prop('checked');
23        if (deptDate != null && deptDate.length > 0){
24          deptDate = deptDate.replace('å¹´','/');
25          deptDate = deptDate.replace('月','/');
26          deptDate = deptDate.replace('日','');
27          //console.log('deptDate=' + deptDate);
28
29          dates = deptDate.split('/');
30          if (dates != null && dates.length >= 3){
31            $('#ski-02 input[name=DeptYear]').val(dates[0]);
32            $('#ski-02 input[name=DeptMonth]').val(dates[1]);
33            $('#ski-02 input[name=DeptDay]').val(dates[2]);
34            //console.log(dates);
35          }
36        }
37        if (deptDateDisabled == true){
38            $('#ski-02 input[name=DeptYear]').val('');
39            $('#ski-02 input[name=DeptMonth]').val('');
40            $('#ski-02 input[name=DeptDay]').val('');
41        }
42
43
44        // form のアクションを参照
45        var act = $(this).attr("action");
46        // formパラメーターを配列変換
47        var searchParamsArray = $('#ski-02 form#searchForm').serializeArray();
48
49        var b = searchParamsArray.filter(function (data, index, array) {
50            if(data.name.match(/ItemClasses/)){
51                return data;
52            }
53        });
54
55        var val = $.map(b,function(obj,key){
56            return obj.value;
57        });
58
59        // formパラメーター "","0","empty"意外の項目抜き出し
60        var params = $.grep(searchParamsArray, function(obj, i) {
61            if(!obj.name.match(/ItemClasses/) && !obj.name.match(/DeptDate/)){
62                return (obj.value != "0" && obj.value != "empty" && obj.value !== "");
63            }
64        });
65
66        var keyword = searchParamsArray.filter(function(data, index, array) {
67            if (data.name.match(/KeyWord/)) {
68                return data;
69            }
70        });
71
72        if(keyword[0].value !==''){
73            params.push({ 'name': 'KeyWordTarget', 'value': 1 });
74        }
75
76        params.push({'name':'ItemClasses','value':val.join('-')});
77
78        //console.log(params);
79        // 抜き出したパラメーターをGETパラメーターに変換
80        var url_params = $.param(params);
81
82        // 検索履歴を保存
83        $('#ski-02').data('HistoryManager').save(act + url_params);
84
85        // GETで遷移
86        //location.href = act + url_params;
87        window.open(act + url_params);
88        return false;
89
90    });
91
92  // 出発地のonChangeイベント
93    $("#ski-02 select[name=Dept]").on("change", function() {
94        var area = $(this).find("option:selected").attr("value");
95        $("#ski-02 input[name=Dept]").val(area);
96        changeAreaSelect_ski();
97    });
98
99  // 目的地選択イベントをセット
100    $("#ski-02 #destination_form").change(function() {
101        changeAreaSelect_ski();    // 単独呼び出しがあるので関数定義しておく
102    });
103    // 詳細エリア選択イベントをセット
104    $("#ski-02 #gelande_form").change(function() {
105        changeSubAreaSelect_ski();  // 単独呼び出しはないが同じ仕様とする
106    });
107
108    $("#ski-02 input[name=DeptDateDisabled]").on('click',function() {
109      if($("#ski-02 input[name=DeptDateDisabled]").prop('checked') == true){
110        $("#ski-02 input[name=DeptDate]").attr('disabled', 'disabled');
111        $("#ski-02 input[name=DeptDate]").css('background-color', '#F2F2F2');
112      }else{
113            $("#ski-02 input[name=DeptDate]").removeAttr('disabled');
114        $("#ski-02 input[name=DeptDate]").css('background-color', '#FFFFFF');
115      }
116    });
117
118    // 初期検索履歴をセット
119    $('#ski-02').HistoryManager(
120    {
121      type:'pc',
122      max:5,
123      name:'grand-top',
124      cookie:'dp',
125      cookieExpires:1,
126      tab:'.search_box .tab li',
127      radio:'#ski-tour input[type=radio]',
128      selectedTab:'.search_box .tab li[value=1]',
129      checkedRadioValue:2,
130      form:'#ski-02 form#searchForm',
131      historyTop:'.history_search',
132      historyArea:'.history_search_inn .list_wrap',
133      slickArea:'.list_wrap',
134      elements:[
135        {
136          name:'Dept',
137          type:'select'
138        },
139        {
140          name:'ArvDistrict',
141          type:'select',
142          func:'changeAreaSelect_ski()'
143        },
144        {
145          name:'GelandeCd',
146          type:'select',
147          func:'changeSubAreaSelect_ski()'
148        },
149        {
150          name:'DeptDate',
151          type:'input'
152        },
153        {
154          name:'DeptDateDisabled',
155          type:'checkbox'
156        },
157        {
158          name:'Days',
159          type:'select'
160        },
161        {
162          name:'Quantity',
163          type:'select'
164        },
165        {
166          name:'ItemClasses',
167          type:'checkbox'
168        },
169        {
170          name:'KeyWord',
171          type:'input'
172        }
173      ],
174      linkKeys:[
175        {
176          pre:'',
177          name:['Dept'],
178          epi:''
179        },
180        {
181          pre:' /',
182          name:['ArvDistrict','GelandeCd'],
183          epi:''
184        },
185        {
186          pre:' /',
187          name:['DeptDate'],
188          epi:'発'
189        },
190        {
191          pre:' /',
192          name:['DeptDateDisabled'],
193          epi:''
194        },
195        {
196          pre:' /',
197          name:['Days'],
198          epi:''
199        },
200        {
201          pre:' /',
202          name:['Quantity'],
203          epi:''
204        },
205        {
206          pre:' /',
207          name:['ItemClasses'],
208          epi:''
209        },
210        {
211          pre:' /',
212          name:['KeyWord'],
213          epi:''
214        },
215      ]
216    }
217    );
218    SeachForm_ski.areaAdd();
219    ItemClassFn_ski.init();
220});
221
222// 目的地選択イベント
223var changeAreaSelect_ski = function() {
224    var area = $("#ski-02 #destination_form").find("option:selected").val();
225    //console.log('changeAreaSelect_ski area=' + area);
226  SeachForm_ski.AreaChoiced(SeachForm_ski.json[area]);
227};
228// 詳細エリア選択イベント
229var changeSubAreaSelect_ski = function() {
230  var area = $("#ski-02 #destination_form").find("option:selected").val();
231    var subarea = $("#ski-02 #gelande_form").find("option:selected").val();
232    //console.log('changeSubAreaSelect_ski area=' + area + ' subarea=' + subarea);
233  SeachForm_ski.SubAreaChoiced(SeachForm_ski.json[area],subarea);
234};
235
236var ItemClassFn_ski = {
237    init: function() {
238        this.check();
239        this.change();
240    },
241    check: function(e) {
242        //console.log(e);
243        var $radio = $('#ski-02 #mc-');
244        var $checkboxWrap = $('#ski-02 #selecMokuteki');
245        if(e){
246            if(e.currentTarget.type!=='checkbox'){
247                if ($radio.is(':checked')) {
248                    $checkboxWrap.find('input[type=checkbox]').each(function() {
249                        $(this).prop('checked', false);
250                    });
251                }
252            }else{
253                var $checked = $checkboxWrap.find(':checked');
254                if($checked.length!==0){
255                    $radio.prop('checked',false);
256                }
257            }
258        }
259    },
260    change: function() {
261        var $radio = $('#ski-02 #mc-');
262        $radio.on('change',function(e){
263            ItemClassFn_ski.check(e);
264        });
265
266        var $checkBox = $('#ski-02 #selecMokuteki').find('input[type=checkbox]');
267        $(document).on('change','#ski-02 #selecMokuteki input[type=checkbox]',function(e){
268            ItemClassFn_ski.check(e);
269        });
270    }
271}
272
273var SeachForm_ski = {
274  json:null,
275    inited: 0,
276    areaAdd: function() {
277        //var area = location.href.split('/').reverse()[1];
278        var area = $.cookie("dp");
279        if (area !== 'chubu' && area !== 'kansai' && area !== 'kyushu' && area !== 'tohoku') {
280            area = 'kanto';
281        }
282        var $formDept = $('#ski-02 #departure_form');
283        $formDept.empty();
284        if (area == 'kanto'){
285          $formDept.append(new Option('関東発','250',true));
286      }else if (area == 'chubu'){
287          $formDept.append(new Option('中部発','533',true));
288      }else if (area == 'kansai'){
289          $formDept.append(new Option('関西発','630',true));
290      }else if (area == 'kyushu'){
291          $formDept.append(new Option('九州発','810',true));
292      }else if (area == 'tohoku'){
293          $formDept.append(new Option('東北発','115',true));
294      }
295
296        // 目的地をセット
297        //var select = $('#ski-02 #destination_form');
298        var $formHgc = $('#ski-02 #destination_form');
299        var select = $formHgc.get(0);
300       // ローカル開発用
301        var url = "/orion/wp-content/themes/orion/js/search/ski/ski_air.json";
302        /*if (jsonFile && jsonFile.length > 0){
303          url = jsonFile;
304        }*/
305        //console.log('Json=' + url);
306        //console.log('select=' + select.html());
307
308        $.getJSON(url, function(json) {
309          //console.log("ski_air=" + json);
310          SeachForm_ski.json = json;
311
312          if (json['Version'] === undefined){// 旧バージョン ※Ver1以降は出発に応じた目的地がセットされる
313            //console.log('Version=1');
314              jsonData = json['ArvDistrict'][area];
315              //console.log(jsonData);
316              $formHgc.empty();
317              for (var j = 0; j < jsonData.length; j++) {
318                  //select.append(new Option(jsonData[j].label, jsonData[j].value , j == 0 ? true: false));
319                  select.options[j] = new Option(jsonData[j].label, jsonData[j].value , j == 0 ? true: false);
320                  if (j == 0){
321                    $formHgc.val(jsonData[j].value);
322                  }
323              }
324          }else if (json['Version'] == "2"){// Ver2以降
325            //console.log('Version=2');
326            jsonData = json['Dept'][area];
327            //console.log(jsonData);
328            $formDept.empty();
329            selectDep = $formDept.get(0);
330            startArea = null;
331        for (var j = 0; j < jsonData.length; j++) {
332                  selectDep.options[j] = new Option(jsonData[j].label, jsonData[j].value , j == 0 ? true: false);
333                  if (j == 0){
334                    startArea = jsonData[j].value;
335                    $formDept.val(startArea);
336                  }
337              }
338              if (startArea != null){
339                jsonData = json['ArvDistrict'][startArea];
340                $formHgc.empty();
341                for (var j = 0; j < jsonData.length; j++) {
342                    select.options[j] = new Option(jsonData[j].label, jsonData[j].value , j == 0 ? true: false);
343                    if (j == 0){
344                      $formHgc.val(jsonData[j].value);
345                    }
346                }
347              }
348          }
349            // $formHgc.append($("#formTmplKnk").tmpl(jsonData[area][0] || jsonData[area][1]));
350            changeAreaSelect_ski();
351            changeSubAreaSelect_ski();
352            // Jsonが非同期実行のため、ここで実行する
353            $('#ski-02').data('HistoryManager').startHistory();
354
355        });
356
357    },
358    /* 未使用
359    getUrlVars: function() {
360        var vars = {};
361        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
362
363        for (var i = 0; i < hashes.length; i++) {
364            hash = hashes[i].split('=');
365            if (hash[0] == "hgc" || hash[0] == "ftc" || hash[0] == "knk") {
366                hash[1] = hash[1].replace(/%2C/ig, ",");
367            }
368            vars[hash[0]] = hash[1];
369        }
370        consle.log(vars);
371        return vars;
372    },*/
373    // 目的地選択
374    AreaChoiced: function(data) {
375        var gidGrepdDa;
376        var gidGrepdAp;
377
378    // 発地ID ※目的地がで紐づく
379        //var gid = $("#dp li.selected").attr("gid");
380        var deptid =  $('#ski-02 #departure_form').val();
381    //console.log('deptid=' + deptid);
382
383    if (SeachForm_ski.json['Version'] === undefined){// 旧バージョンのみ目的地に応じて出発地が絞り込まれる
384      // 出発地
385          $.each(data["Dept"], function(i, n) {
386              gidGrepdAp = $.grep(data["Dept"], function(ap) {
387                if (ap.deptid && ap.deptid.length > 0){
388                  $hitId = $.grep(ap.deptid, function(id,index) {
389                    return id == deptid
390                  });
391                  if ($hitId && $hitId.length > 0){
392                    return true;
393                  }
394                }
395                return false;
396              });
397          });
398          // 発地選択アップデート 既に挿入しているがDeptで設定しているリストで書き換える
399          $("#ski-02 #departure_form").empty();
400          $("#ski-02 #departure_form").append($("#formTmplFtc").tmpl(gidGrepdAp || data["Dept"]));
401          $("#ski-02 #departure_form").val(deptid);
402
403          // ゲレンデ
404          $.each(data["GelandeCd"], function(i, n) {
405              gidGrepdDa = $.grep(data["GelandeCd"], function(ap) {
406                if (ap.deptid && ap.deptid.length > 0){
407                  $hitId = $.grep(ap.deptid, function(id,index) {
408                    return id == deptid
409                  });
410                  if ($hitId && $hitId.length > 0){
411                    return true;
412                  }
413                }
414                return false;
415              });
416          });
417
418          // 詳細エリアへテンプレート挿入
419          $("#ski-02 #gelande_form").empty();
420          $("#ski-02 #gelande_form").val('');
421          $("#ski-02 #gelande_form").append($("#formTmplKnk").tmpl(gidGrepdDa || data["GelandeCd"]));
422
423    }else if (SeachForm_ski.json['Version'] == "2"){// Ver2以降
424        //出発地に応じた目的地をセットする
425         jsonData = SeachForm_ski.json['ArvDistrict'][deptid];
426          var $formHgc = $('#ski-02 #destination_form');
427        val = $formHgc.val(); //現在選択中の目的地
428          var select = $formHgc.get(0);
429            $formHgc.empty();
430            for (var j = 0; j < jsonData.length; j++) {
431                select.options[j] = new Option(jsonData[j].label, jsonData[j].value , j == 0 ? true: false);
432                if (val == jsonData[j].value){
433                  $formHgc.val(jsonData[j].value);
434                }
435            }
436
437            //目的地に応じたゲレンデをセットする
438         jsonDataG = SeachForm_ski.json[$formHgc.val()]['GelandeCd'];
439          var $formHgcG = $('#ski-02 #gelande_form');
440        val = $formHgcG.val(); //現在選択中の目的地
441          var selectG = $formHgcG.get(0);
442            $formHgcG.empty();
443            var iCntG = 0;
444            for (var j = 0; j < jsonDataG.length; j++) {
445              var deptids = jsonDataG[j].deptid;
446              for(var d = 0; d < deptids.length; d++){
447                if(deptids[d] == deptid){
448                  //selectG.append(new Option(jsonDataG[j].label, jsonDataG[j].value , j == 0 ? true: false));
449                  selectG.options[iCntG] = new Option(jsonDataG[j].label, jsonDataG[j].value , j == 0 ? true: false);
450                    iCntG++;
451                    if (val == jsonDataG[j].value){
452                      $formHgcG.val(jsonDataG[j].value);
453                    }
454              }
455          }
456            }
457    }
458
459
460    // 20180626 追加 from
461    var gidGrepdMc = {};
462    var gidGrepdKey = {};
463    $("#ski-02 #form_mc").empty();
464    $("#ski-02 #form_mc").val('');
465    $("#ski-02 #searchkeyex").empty();
466    $("#ski-02 #searchkeyex").val('');
467    $("#ski-02 input[name=KeyWord]").val('');
468    var mapCdList = [];
469    mapCdList[0] = 'empty';
470
471    //こだわり条件
472    $.each(data["ItemClasses"].items, function(i, n) {
473      if (mapCdList && mapCdList.length > 0) {
474          gidGrepdMc.items = $.grep(data["ItemClasses"].items, function(mc) {
475            if (mc.areacd && mc.areacd.length > 0){
476            $hitId = $.grep(mc.areacd, function(id,index) {
477              for(j=0;j<mapCdList.length;j++){
478                return id == mapCdList[j];
479              }
480            });
481            if ($hitId && $hitId.length > 0){
482              return true;
483            }
484          }
485          return false;
486          });
487      }
488    });
489
490    //キーワード
491    $.each(data["KeyWord"].items, function(i, n) {
492      if (mapCdList && mapCdList.length > 0) {
493        gidGrepdKey.items = $.grep(data["KeyWord"].items, function(key) {
494          if (key.areacd && key.areacd.length > 0){
495            $hitId = $.grep(key.areacd, function(id,index) {
496              for(j=0;j<mapCdList.length;j++){
497                return id == mapCdList[j];
498              }
499            });
500            if ($hitId && $hitId.length > 0){
501              return true;
502            }
503          }
504          return false;
505        });
506      }
507    });
508
509    // こだわり条件 mc
510    var mc = (gidGrepdMc.items) ? gidGrepdMc : data["ItemClasses"];
511    $("#ski-02 #form_mc").append($("#formTmplMc").tmpl(mc));
512    $("#ski-02 #mc-").attr("checked", true);
513
514    // 人気キーワード
515    var key = (gidGrepdKey.items) ? gidGrepdKey : data["KeyWord"];
516    $("#ski-02 ul#searchkeyex").append($("#formKeyword").tmpl(key));
517
518    // キーワードリストのonClickイベント
519    $("#ski-02 ul#searchkeyex a").on("click", function() {
520      var string = $("#ski-02 #searchkey").val();
521      var new_string = (string !== "") ? string + " " + $(this).text() : $(this).text();
522      $("#ski-02 #searchkey").val(new_string);
523    });
524    // 20180626 追加 to
525
526
527
528    },
529    // 詳細エリア選択
530    SubAreaChoiced: function(data,subarea) {
531
532        var gidGrepdMc = {};
533        var gidGrepdKey = {};
534
535        $("#ski-02 #form_mc").empty();
536        $("#ski-02 #form_mc").val('');
537        $("#ski-02 #searchkeyex").empty();
538        $("#ski-02 #searchkeyex").val('');
539        $("#ski-02 input[name=KeyWord]").val('');
540
541        mapCdList = null;
542
543        // 詳細エリアマップコードリスト
544        if (subarea && subarea.length > 0){
545          mapCdList = subarea.split(',');
546        }else{
547          return;
548        }
549        //console.log('mapCdList=' + mapCdList);
550
551    //こだわり条件
552        $.each(data["ItemClasses"].items, function(i, n) {
553            if (mapCdList && mapCdList.length > 0) {
554                gidGrepdMc.items = $.grep(data["ItemClasses"].items, function(mc) {
555                  if (mc.areacd && mc.areacd.length > 0){
556                  $hitId = $.grep(mc.areacd, function(id,index) {
557                    for(j=0;j<mapCdList.length;j++){
558                      return id == mapCdList[j];
559                    }
560                  });
561                  if ($hitId && $hitId.length > 0){
562                    return true;
563                  }
564                }
565                return false;
566                });
567            }
568        });
569
570    //キーワード
571        $.each(data["KeyWord"].items, function(i, n) {
572            if (mapCdList && mapCdList.length > 0) {
573                gidGrepdKey.items = $.grep(data["KeyWord"].items, function(key) {
574                    if (key.areacd && key.areacd.length > 0){
575                  $hitId = $.grep(key.areacd, function(id,index) {
576                    for(j=0;j<mapCdList.length;j++){
577                      return id == mapCdList[j];
578                    }
579                  });
580                  if ($hitId && $hitId.length > 0){
581                    return true;
582                  }
583                }
584                return false;
585                });
586            }
587        });
588
589        // こだわり条件 mc
590        var mc = (gidGrepdMc.items) ? gidGrepdMc : data["ItemClasses"];
591        $("#ski-02 #form_mc").append($("#formTmplMc").tmpl(mc));
592        $("#ski-02 #mc-").attr("checked", true);
593
594    // 人気キーワード
595        var key = (gidGrepdKey.items) ? gidGrepdKey : data["KeyWord"];
596        $("#ski-02 ul#searchkeyex").append($("#formKeyword").tmpl(key));
597
598        // キーワードリストのonClickイベント
599      $("#ski-02 ul#searchkeyex a").on("click", function() {
600          var string = $("#ski-02 #searchkey").val();
601          var new_string = (string !== "") ? string + " " + $(this).text() : $(this).text();
602          $("#ski-02 #searchkey").val(new_string);
603      });
604
605    }
606
607};

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.