PageSourceSearch

https://www.daikin.com/-/media/5402A9E85EBF41A6B9662E6ABF66E64E.ashx

js daikin.com collected 2026-09-24 19:10:17 UTC 21,980 bytes, 686 lines download raw bytes

1'use strict';
2
3(function ($) {
4  var $html = $('html');
5  var $win = $(window);
6  var isIE8 = $html.hasClass('ie8');
7  var isLegacyAndroid = (function () {
8    var ua = navigator.userAgent;
9    switch (true) {
10      case /Android 4\.[0123]/i.test(ua):
11        return true;
12      case /Android 4\.4/i.test(ua) && /Linux; U;/i.test(ua) && !/Chrome/i.test(ua):
13        return true;
14      default:
15        return false;
16    }
17  }());
18
19  /**
20   * throttle
21   */
22  function throttle(func, wait) {
23    var timeout;
24    var prev = +new Date;
25    // func();
26    return function () {
27      var now = +new Date;
28      var diff = now - prev;
29      clearTimeout(timeout);
30      if (diff >= wait) {
31        func();
32        prev = now;
33      } else {
34        timeout = setTimeout(func, diff);
35      }
36    };
37  }
38
39  /**
40   * debounce
41   */
42  function debounce(func, wait) {
43    var timeout;
44    // func();
45    return function () {
46      clearTimeout(timeout);
47      timeout = setTimeout(func, wait);
48    };
49  }
50
51  /**
52   * ウィンドウ幅を取得(IE8はスクロールバーを含まない幅)
53   * @returns {Number} ウィンドウ幅
54   */
55  function getWinWidth() {
56    var w = window.innerWidth;
57    return (w !== undefined) ? w : $win.width();
58  }
59
60  /**
61   * アコーディオン
62   */
63  $('.g-acc_item').each(function () {
64    var $btn = $(this);
65    var $body = $($btn.data('body'));
66    if ($body.length === 0) $body = $btn.next();
67
68    $body.css('overflow', 'hidden');
69
70    $btn.on('click', function (e, immediate) {
71      $btn.toggleClass('g-acc_item-on');
72      $body.stop().slideToggle(immediate ? 0 : 400);
73      $win.triggerHandler('resize.height');
74      return false;
75    });
76  })
77  .trigger('click', [true]);
78
79  /**
80   * カルーセル
81   */
82  $('.g-carousel').each(function () {
83    var count = $(this).data('carousel') || 4;
84    var rspConf = [{
85      breakpoint: 481,
86      settings: {
87        slidesToShow: 1,
88        slidesToScroll: 1,
89        centerMode: true,
90        centerPadding: '23px'
91      }
92    }];
93    if (count > 3) {
94      rspConf.unshift({
95        breakpoint: 769,
96        settings: {
97          slidesToShow: 3,
98          slidesToScroll: 3
99        }
100      });
101    }
102    $('.g-carousel_inner', this).slick({
103      slidesToShow: count,
104      slidesToScroll: count,
105      appendArrows: '.g-carousel',
106      prevArrow: '<div class="g-slider_nav g-slider_prev"></div>',
107      nextArrow: '<div class="g-slider_nav g-slider_next"></div>',
108      dots: true,
109      customPaging: function (slick, i) {
110        return (i + 1) + '/' + slick.slideCount;
111      },
112      responsive: isIE8 ? null : rspConf
113    });
114  });
115
116  /**
117   * PCローカルナビの処理
118   */
119  $('.g-lnav').each(function () {
120    var noAnim = $(this).hasClass('g-lnav-anime') === false;
121    var $wrapper = $('.g-wrapper');
122    var $curLv2;
123
124    $('.g-lnav_lv2', this).each(function () {
125      var active = 'g-lnav-active';
126      var $lv2 = $(this);
127
128      if (Modernizr.touchevents) {
129        $lv2.parent()
130          .on('click', function (e) {
131            if (getWinWidth() < 960) return undefined;
132            if (e.target.tagName === 'A') return true;
133            if ($curLv2 && $curLv2[0] !== this) $curLv2.trigger('click');
134            var $el = $(this);
135            var clickNs = 'click.lnav';
136            var scrollNs = 'scroll.lnav';
137            $wrapper.off(clickNs);
138            $win.off(scrollNs);
139            $el.toggleClass(active);
140            $lv2.stop().slideToggle(noAnim ? 0 : 400);
141            if ($el.hasClass(active)) {
142              var fn = function () { $el.trigger('click'); };
143              $curLv2 = $el;
144              $wrapper.one(clickNs, fn);
145              $win.one(scrollNs, fn);
146            } else {
147              $curLv2 = null;
148            }
149            return false;
150          });
151      } else {
152        $lv2.parent()
153          .on('mouseenter', function () {
154            if (!isIE8 && getWinWidth() < 960) return;
155            $(this).addClass(active);
156            $lv2.stop().slideDown(noAnim ? 0 : 400);
157          })
158          .on('mouseleave', function () {
159            if (!isIE8 && getWinWidth() < 960) return;
160            $(this).removeClass(active);
161            $lv2.stop().slideUp(noAnim ? 0 : 400);
162          });
163      }
164    });
165
166    /**
167     * ローカルナビのPC/SP切り替え処理
168     */
169    (function () {
170      var isSpView = false;
171
172      function deactivateLnav() {
173        $html.removeClass('g-lnav-sticky');
174        $('.g-lnav').removeClass('g-lnav-on');
175        $('.g-wrapper, .g-lnav_lv1').removeAttr('style');
176        $('.g-lnav-active').removeClass('g-lnav-active');
177        $('.g-lnav_accBtn').removeClass('g-lnav_accBtn-on g-lnav_lv1_hd-on')
178          .next('.g-lnav_accBody').width('auto').height('auto').hide();
179        $win.add($wrapper).off('.lnav');
180      }
181
182      $win.on('resize', debounce(function () {
183        if (isIE8) return;
184        $curLv2 = null;
185        var w = getWinWidth();
186        if (w < 960 && !isSpView) {
187          isSpView = true;
188          deactivateLnav();
189        } else if (w >= 960 && isSpView) {
190          isSpView = false;
191          deactivateLnav();
192        }
193      }, 100))
194      .trigger('resize');
195    }());
196  });
197
198  /**
199   * SPローカルナビの処理
200   */
201  (function () {
202    var ON = 'g-lnav-on';
203    var $wrapper = $('.g-wrapper');
204    var $main = $('.g-main');
205    var $lnavLv1 = $('.g-lnav_lv1');
206    var $btn = $('.g-lnav_hd');
207    var $lnav = $('.g-lnav');
208    var $header = $('.g-header').length ? $('.g-header') : $('#HeaderArea');
209    var $hnav = $('.g-hnav').length ? $('.g-hnav') : $('#GlobalNavWrap');
210    var $body = $('body');
211    var y;
212
213    if ($lnav.length !== 1) return;
214
215    function deactivate() {
216      $wrapper.css({ overflow: 'visible', height: 'auto' });
217      $win.scrollTop(y);
218      $lnav.removeClass(ON);
219      $lnavLv1.hide();
220      $body.removeClass('subnav-open'); // EN
221    }
222
223    function activate() {
224      if (isIE8 || getWinWidth() > 959) return;
225      y = $win.scrollTop();
226      $win.scrollTop(0);
227      $wrapper.css({ overflow: 'hidden', height: $win.height() });
228      $lnav.addClass(ON);
229      $lnavLv1.show();
230      $body.addClass('subnav-open'); // EN
231    }
232
233    $btn.on('click', function () {
234      if ($lnav.hasClass(ON)) deactivate();
235      else activate();
236      if (isLegacyAndroid) $main.before($lnav);
237    });
238
239    $win.on('scroll', function () {
240      if (isIE8 || $lnav.hasClass(ON)) return;
241      var y1 = $win.scrollTop();
242      var y2 = (getWinWidth() > 959) ?
243        ($header.outerHeight() + $hnav.outerHeight()) : $header.height();
244      $html.toggleClass('g-lnav-sticky', y1 >= y2);
245      if (isLegacyAndroid) $main.before($lnav);
246    })
247    .trigger('scroll');
248  }());
249
250  /**
251   * SPローカルナビ内アコーディオンの処理
252   */
253  $('.g-lnav_accBtn').on('click', function (e) {
254    if (isIE8 || getWinWidth() > 959 || e.target.tagName === 'A') return;
255    $(this).toggleClass('g-lnav_accBtn-on').next('.g-lnav_accBody').slideToggle();
256    e.preventDefault();
257  });
258
259  /**
260   * 動画
261   */
262  $('.g-video').each(function () {
263    var $el = $(this);
264    var w = $el.data('video') || '100%';
265    var $iframe = $('iframe', this);
266    var per = (100 * $iframe[0].height) / $iframe[0].width;
267    $('.g-video_el', this).css('padding-bottom', per + '%');
268    $(this).width(w).addClass('g-video-init');
269  });
270
271  /**
272   * Google Map
273   */
274  $('.g-map').each(function () {
275    var $el = $(this);
276    var w = $el.data('map') || '100%';
277    var $iframe = $('iframe', this);
278    var per = (100 * $iframe[0].height) / $iframe[0].width;
279    $('.g-map_el', this).css('padding-bottom', per + '%');
280    $(this).width(w).addClass('g-map-init');
281  });
282
283  /**
284   * モーダル
285   */
286  (function () {
287    var timer;
288    var $group;
289    var $wrapper;
290    var $modal;
291    var $inner;
292    var $box;
293    var $body;
294    var $close;
295    var $print;
296    var $prev;
297    var $next;
298    var $pagination;
299    var $ctrlInner;
300    var $slickcloned;
301    var load = function ($anchor) {
302      $html.removeClass('g-modal-init g-modal-multi g-modal-prev g-modal-next');
303      $('.g-modal_el', $body).remove();
304      var uri = $anchor[0].href;
305      var $iframe = $('<iframe src="' + uri + '" class="g-modal_if"/>').appendTo($body)
306        .one('load', function () {
307          var win = this.contentWindow;
308          var isSp = getWinWidth() <= 480;
309          var duration = (isIE8 || !isSp) ? 500 : 0;
310          var $el = win.jQuery(win.document).find('.g-modal_el');
311          var y;
312          if (isSp || Modernizr.touchevents) {
313            y = $win.scrollTop();
314            $wrapper.css({ overflow: 'hidden', height: $win.height() });
315            $win.scrollTop(0);
316          }
317          $(this).replaceWith($el);
318          $box.animate({ height: $body.outerHeight() }, duration, function () {
319            $html.addClass('g-modal-init');
320            if ($group.length > 0) {
321              var index = $group.index($anchor);
322              if($slickcloned.length > 0){
323                $pagination.html('<b>' + (index + 1 - $slickcloned.length/2) + '</b>/' + ($group.length - $slickcloned.length));
324                if(index + 1 - $slickcloned.length/2 == 1){
325                  $('.g-modal_prev').css('visibility','hidden');
326                }else if(index + 1 - $slickcloned.length/2 == $group.length - $slickcloned.length){
327                  $('.g-modal_next').css('visibility','hidden');
328                }else{
329                  $('.g-modal_prev').css('visibility','visible');
330                  $('.g-modal_next').css('visibility','visible');
331                }
332              }else{
333              $pagination.html('<b>' + (index + 1) + '</b>/' + $group.length);
334              }
335              
336              $html.toggleClass('g-modal-prev', index !== 0);
337              $prev.off().on('click', function () { load($group.eq(index - 1)); });
338              $html.toggleClass('g-modal-next', index !== $group.length - 1);
339              $next.off().on('click', function () { load($group.eq(index + 1)); });
340              $ctrlInner.css('marginRight', $win.width() - $inner.width());
341              $html.addClass('g-modal-multi');
342            }
343          });
344          $modal.off().on('click', function (e2) {
345            var el = e2.target;
346            if (el === $box[0] || $.contains($box[0], el)) return;
347            $modal.remove();
348            $html.removeClass('g-modal g-modal-init g-modal-multi g-modal-prev g-modal-next');
349            if (isSp || Modernizr.touchevents) {
350              $wrapper.css({ overflow: 'visible', height: 'auto' });
351              $win.scrollTop(y);
352            }
353          });
354          $close.off().on('click', function () { $modal.trigger('click'); });
355          $print.off().on('click', function () {
356            var param = (uri.indexOf('?') === -1 ? '?' : '&') + 'print';
357            window.open(uri + param, '_blank');
358          });
359        });
360      clearTimeout(timer);
361      timer = setTimeout(function () { $iframe.trigger('load'); }, 5000);
362      return $iframe;
363    };
364
365    $('.j-modal').on('click', function (e) {
366      e.preventDefault();
367      var $el = $(this);
368      var group = $el.data('modal');
369      $group = group ? $('.j-modal[data-modal="' + group + '"]') : [];
370      $html.addClass('g-modal');
371      $wrapper = $('.g-wrapper');
372      $modal = $('<div class="g-modal_wrapper"><div class="g-modal_outer"><div class="g-modal_inner"><div class="g-modal_box"><div class="g-modal_body"/><div class="g-modal_close"/><div class="g-modal_print"/><div class="g-modal_ctrl"><div class="g-modal_ctrlInner"><div class="g-modal_prev"/><div class="g-modal_next"/></div></div><div class="g-modal_pagination"/></div></div></div></div>').appendTo('body');
373      $inner = $('.g-modal_inner');
374      $box = $('.g-modal_box');
375      $body = $('.g-modal_body');
376      $close = $('.g-modal_close');
377      $print = $('.g-modal_print');
378      $prev = $('.g-modal_prev');
379      $next = $('.g-modal_next');
380      $pagination = $('.g-modal_pagination');
381      $ctrlInner = $('.g-modal_ctrlInner');
382      $slickcloned = group ? $('.slick-cloned[data-modal="' + group + '"]') : [];
383      load($el);
384    });
385  }());
386
387  /**
388   * テーブルがスクロールできることを示すインディケーター
389   */
390  if (Modernizr.touchevents) {
391    (function () {
392      var $els = $('.g-table-scroll.g-table-fixed');
393      if ($els.length === 0) return;
394      $els.each(function (i) {
395        var $el = $(this);
396        var ename = 'scroll.indicator.' + i;
397        $win.on(ename, throttle(function () {
398          if ($el.is(':hidden')) return;
399          var bottom = $win.scrollTop() + $win.height();
400          var y = $el.offset().top;
401          if (bottom > y + 200) {
402            $win.off(ename);
403            if ($el.outerWidth() >= $('.g-table_el', $el).outerWidth()) return;
404            var $indicator = $('<div class="g-table-indicator"/>').appendTo($el)
405              .fadeIn(300).delay(5000).fadeOut(300);
406            $el.one('scroll', function () { $indicator.remove(); });
407          }
408        }, 100))
409        .trigger(ename);
410      });
411    }());
412  }
413
414  /**
415   * サイドバーのPC/SP切り替え処理
416   */
417  $('.g-sidebar').each(function () {
418    var isSpView = false;
419
420    function deactivateSidebar(display) {
421      $html.removeClass('g-sidebar-sticky');
422      $('.g-sidebar').removeClass('g-sidebar-on');
423      $('.g-wrapper, .g-sidebar_lv1').removeAttr('style');
424      $('.g-sidebar-active').removeClass('g-sidebar-active');
425      $('.g-sidebar_accBtn').removeClass('g-sidebar_accBtn-on g-sidebar_lv1_hd-on')
426        .next('.g-sidebar_accBody').width('auto').height('auto').toggle(display);
427    }
428
429    $win.on('resize', debounce(function () {
430      if (isIE8) return;
431      var w = getWinWidth();
432      if (w <= 769 && !isSpView) {
433        isSpView = true;
434        deactivateSidebar(false);
435      } else if (w > 769 && isSpView) {
436        isSpView = false;
437        deactivateSidebar(true);
438      }
439    }, 100))
440    .trigger('resize');
441  });
442
443  /**
444   * SPサイドバーの処理
445   */
446  (function () {
447    var ON = 'g-sidebar-on';
448    var $wrapper = $('.g-wrapper');
449    var $contents = $('.g-contents');
450    var $sidebarLv1 = $('.g-sidebar_lv1');
451    var $btn = $('.g-sidebar_hd');
452    var $sidebar = $('.g-sidebar');
453    //var $header = $('.g-header');
454    //var $hnav = $('.g-hnav');
455    var $header = $('.g-header').length ? $('.g-header') : $('#HeaderArea');
456    var $hnav = $('.g-hnav').length ? $('.g-hnav') : $('#GlobalNavWrap');
457    var $body = $('body');
458    var y;
459
460    if ($sidebar.length !== 1) return;
461
462    function deactivate() {
463      $wrapper.css({ overflow: 'visible', height: 'auto' });
464      $win.scrollTop(y);
465      $sidebar.removeClass(ON);
466      $sidebarLv1.hide();
467      $body.removeClass('subnav-open'); // EN
468    }
469
470    function activate() {
471      if (isIE8 || getWinWidth() > 769) return;
472      y = $win.scrollTop();
473      $win.scrollTop(0);
474      $wrapper.css({ overflow: 'hidden', height: $win.height() });
475      $sidebar.addClass(ON);
476      $sidebarLv1.show();
477      $body.addClass('subnav-open'); // EN
478    }
479
480    $btn.on('click', function () {
481      if ($sidebar.hasClass(ON)) deactivate();
482      else activate();
483      if (isLegacyAndroid) $contents.after($sidebar);
484    });
485
486    $win.on('scroll', function () {
487      if (isIE8 || $sidebar.hasClass(ON)) return;
488      var y1 = $win.scrollTop();
489      var y2 = (getWinWidth() > 769) ?
490        ($header.outerHeight() + $hnav.outerHeight()) : $header.height();
491      $html.toggleClass('g-sidebar-sticky', y1 >= y2);
492      if (isLegacyAndroid) $contents.after($sidebar);
493    })
494    .trigger('scroll');
495  }());
496
497  /**
498   * SPサイドバー内アコーディオンの処理
499   */
500  $('.g-sidebar_accBtn').on('click', function (e) {
501    if (isIE8 || getWinWidth() > 769 || e.target.tagName === 'A') return;
502    $(this).toggleClass('g-sidebar_accBtn-on').next('.g-sidebar_accBody').slideToggle();
503    e.preventDefault();
504  });
505
506  /**
507   * SP時にタブをプルダウンに変更
508   */
509  var glTabLabel = (function () {
510    var elem;
511    var elemLink;
512    var elemSelect;
513
514    function createSelectOption() {
515      var item = '';
516      elemLink.find('a').each(function (i) {
517        var $this = $(this);
518        item += '<option value="' + i + '" data-url="' + $this.attr('href') + '" ' + ($this.parent().hasClass('is-Selected') ? 'selected="selected"' : '') + '>' + $this.text() + '</option>';
519      });
520      elemSelect.find('select').append($.parseHTML(item));
521    }
522
523    function setEventToSelect() {
524      elemSelect.find('select').on('change', function () {
525        window.location = $(this).find('option:selected').data('url');
526      });
527    }
528
529    function init() {
530      elem = $('.g-tabMenu-rwd .g-tabMenu_head');
531      if (!elem.length) return;
532      elemLink = $('.g-tabMenu-rwd .g-tabMenu_list');
533      elemSelect = $('.g-tabMenu-rwd .g-tabMenu_select');
534      createSelectOption();
535      setEventToSelect();
536    }
537
538    return { init: init };
539  }());
540
541  glTabLabel.init();
542
543  /**
544   * カルーセル(メインビジュアル)
545   */
546  (function () {
547    var $sliders = $('.g-poster_main');
548    $sliders.slick({
549      slidesToShow: 1,
550      slidesToScroll: 1,
551      autoplay: true,
552      arrows: true,
553      appendArrows: '.g-poster_nav',
554      autoplaySpeed: 7000,
555      speed: 700,
556      fade: true,
557      cssEase: 'ease-out',
558      prevArrow: '<div class="g-slider_nav g-slider_prev"></div>',
559      nextArrow: '<div class="g-slider_nav g-slider_next"></div>',
560      appendDots: '.g-poster_inner',
561      dots: true,
562      responsive: isIE8 ? null : [
563          {
564            breakpoint: 481,
565            settings: {
566              slidesToShow: 1,
567              slidesToScroll: 1,
568              centerMode: true,
569              centerPadding: 0,
570              autoplay: true,
571              speed: 700
572            }
573          }
574        ]
575    });
576    $(document).on('navopen', function () { $sliders.slick('slickPause'); })
577      .on('navclose', function () { $sliders.slick('slickPlay'); });
578  }());
579
580  /**
581   * 高さを揃える
582   */
583  (function () {
584
585    var items = $('.j-height').get();
586    var sets = _.groupBy(items, function (el) { return $(el).data('height'); });
587
588    $win.on('resize.height', _.debounce(function () {
589      var w = getWinWidth();
590      var device = (w <= 480) ? 'sp' : (w <= 768) ? 'touch' : 'pc';
591      var isSpView = w <= 480;
592
593      _.forEach(sets, function (set, key) {
594        var h = 0;
595        var arr = [];
596        for (var i = 0; i < set.length; i++) {
597          var $el = (device ==='touch') ? $(set[i]).not('[data-height-touch-clear]') : (device === 'sp') ? $(set[i]).not('[data-height-sp-clear], [data-height-touch-clear]') :  $(set[i]);
598          $(set[i]).css('height', 'auto').css('min-height', 0);
599          h = Math.max(h, $el.outerHeight());
600          arr.push($el);
601        }
602
603        for (var i = 0; i < arr.length; i++) {
604          $(arr[i]).css($(arr[i]).css('display') === 'table-cell' ? 'height' : 'min-height', h);
605        }
606
607        // var $els = $(set);
608        // $els.css($els.css('display') === 'table-cell' ? 'height' : 'min-height', h);
609      });
610    }, 100))
611      .trigger('resize.height');
612  }());
613
614  /**
615   * スムーズスクロール
616   */
617  $('.j-scroll').on('click', function (e) {
618    e.stopImmediatePropagation();
619
620    var id = $(this).attr('href');
621
622    var w = getWinWidth();
623    var device = (w <= 768) ? 'sp' : (w <= 960) ? 'touch' : 'pc';
624
625    // var diff = $('body').hasClass('g-page-dept') ? -70 : 0;
626
627    // ページ上部に固定されるヘッダーの高さ分、アンカーポイントのオフセットをずらす
628    // テンプレ毎に高さが違うので、固定値45とする
629    var diff = 0;
630    if($('body').hasClass('g-page-categoryNav')){
631      // glocal A / B
632      diff = $('body').hasClass('g-page-sidebar') && device !== 'sp' ? 0 : 45;
633    }else if(!$('body').hasClass('g-page-sidebar')){
634      // 国内 A
635      diff = 45;
636    }else{
637      if($('#MegaMenu_Overlay').length){
638        // global C
639        diff = (device === 'pc') ? 125 : (device === 'touch') ? 0 : 45;
640      }else{
641        // 国内 B
642        diff = (device === 'sp') ? 45 : 0;
643      }
644    }
645
646    // accordion
647    var $btn = $($(this).data('accordion-btn'));
648    var $body = $($btn.data('body'));
649    if ($body.length === 0) $body = $btn.next();
650    if($body.css('display') !== 'block'){
651      $btn.trigger('click', [true]);
652    }
653
654    $('html, body').animate({ scrollTop: $(id).offset().top - diff }, 700);
655    e.preventDefault();
656  });
657
658  /**
659   * タブUI
660   */
661  $('.g-tabMenu-js').each(function () {
662    var css = 'g-tabMenu-on';
663    var $btns = $('.g-tabMenu_list', this).find('a');
664    var $bodies = $('.g-tabMenu_body', this);
665    var hash = window.location.hash;
666
667    $btns.on('click', function (e, immediate) {
668      var $el = $(this);
669      var $body = $($el.attr('href'));
670
671      $btns.parent().removeClass(css);
672      $el.parent().addClass(css);
673      $bodies.hide();
674      $body.show();
675      $win.triggerHandler('resize.height');
676      return false;
677    });
678
679    $btns.eq(0).trigger('click', [true]);
680
681    if(hash && $(hash).length){
682      $('.g-tabMenu_list').find('a[href="'+hash+'"]').trigger('click', [true]);
683    }
684  });
685
686}(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.