PageSourceSearch

https://dek-art.ru/bitrix/templates/aspro-priority2/js/video_banner.js

js dek-art.ru collected 2026-10-04 23:54:53 UTC 37,485 bytes, 1,028 lines download raw bytes

1var players = {};
2
3function pauseMainBanner() {
4  $(".banners-big .main-slider").data("swiper").autoplay.stop();
5}
6
7function playMainBanner() {
8  const swiper = $(".banners-big .main-slider").data("swiper");
9  if (swiper?.params.autoplay.enabled) {
10    if (!swiper.autoplay.running) {
11      swiper.autoplay.start();
12      swiper.autoplay.resume(); // need for correct autoplay timeout
13    }
14  }
15}
16
17function nextSlideMainBanner() {
18  $(".banners-big .main-slider").data("swiper").slideNext();
19}
20
21function startMainBannerSlideVideo($slide) {
22  var slideActiveIndex = $slide.attr("data-slide_index");
23  var $slides = $slide.closest(".main-slider").find('.main-slider__item[data-slide_index="' + slideActiveIndex + '"]'); // current slide & cloned
24  var videoSource = $slide.attr("data-video_source");
25
26  if (videoSource) {
27    $slides.addClass("loading");
28    pauseMainBanner();
29
30    // var $slider = $slide.closest(".owl-carousel");
31    var $slider = $slide.closest(".main-slider");
32    var slidesIndexesWithVideo = $slider.data("slidesIndexesWithVideo");
33    if (typeof slidesIndexesWithVideo === "undefined") {
34      slidesIndexesWithVideo = [];
35    }
36    slidesIndexesWithVideo.push(slideActiveIndex);
37    $slider.data("slidesIndexesWithVideo", slidesIndexesWithVideo);
38
39    var videoPlayerSrc = $slide.attr("data-video_src");
40    var videoSoundDisabled = $slide.attr("data-video_disable_sound");
41    var bVideoSoundDisabled = videoSoundDisabled == 1;
42    var videoLoop = $slide.attr("data-video_loop");
43    var bVideoLoop = videoLoop == 1;
44    var bVideoAutoPlay = $slide.attr("data-video_autoplay") == 1;
45    var videoCover = $slide.attr("data-video_cover");
46    var bVideoCover = videoCover == 1;
47    var videoUnderText = $slide.attr("data-video_under_text");
48    var bVideoUnderText = videoUnderText == 1;
49    var videoPlayer = $slide.attr("data-video_player");
50    var bVideoPlayerYoutube = videoPlayer === "YOUTUBE";
51    var bVideoPlayerVimeo = videoPlayer === "VIMEO";
52    var bVideoPlayerRutube = videoPlayer === "RUTUBE";
53    var bVideoPlayerHtml5 = videoPlayer === "HTML5";
54    var videoWidth = bVideoPlayerHtml5 ? false : $slide.attr("data-video_width");
55    var videoHeight = bVideoPlayerHtml5 ? false : $slide.attr("data-video_height");
56
57    if (videoPlayerSrc && !$slide.find(".video").length) {
58      var InitPlayer = function () {
59        // prepare videoID
60        var videoIDs = [];
61        for (var i = 0; i < $slides.length; ++i) {
62          var videoID = getRandomInt(100, 1000);
63          videoIDs.push(videoID);
64        }
65
66        $slides.each(function (i, node) {
67          var $_slide = $(node);
68          var videoID = videoIDs[i];
69          var videoClass = $_slide.attr("id") + " player_" + videoID + (bVideoCover ? " cover" : "");
70
71          if (!$_slide.find(".video." + videoClass).length) {
72            if (bVideoPlayerYoutube) {
73              $_slide.append(
74                '<div class="wrapper_video"><iframe id="player_' +
75                  videoID +
76                  '" class="video ' +
77                  videoClass +
78                  '" src="' +
79                  videoPlayerSrc +
80                  '" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen allow="accelerometer; encrypted-media; gyroscope; fullscreen;"' +
81                  (videoWidth && videoHeight ? ' data-video_proportion="' + videoWidth / videoHeight + '"' : "") +
82                  "></iframe></div>"
83              );
84            } else if (bVideoPlayerVimeo) {
85              $_slide.append(
86                '<div class="wrapper_video"><iframe id="player_' +
87                  videoID +
88                  '" class="video ' +
89                  videoClass +
90                  '" src="' +
91                  videoPlayerSrc +
92                  '" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen allow="accelerometer; encrypted-media; gyroscope; fullscreen;"' +
93                  (videoWidth && videoHeight ? ' data-video_proportion="' + videoWidth / videoHeight + '"' : "") +
94                  "></iframe></div>"
95              );
96            } else if (bVideoPlayerRutube) {
97              videoPlayerSrc = videoPlayerSrc + "&playerid=" + videoID;
98              $_slide.append(
99                '<div class="wrapper_video"><iframe id="player_' +
100                  videoID +
101                  '" class="video ' +
102                  videoClass +
103                  '" src="' +
104                  videoPlayerSrc +
105                  '" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen allow="encrypted-media; gyroscope; fullscreen;"' +
106                  (videoWidth && videoHeight ? ' data-video_proportion="' + videoWidth / videoHeight + '"' : "") +
107                  "></iframe></div>"
108              );
109            } else if (bVideoPlayerHtml5) {
110              $_slide.append(
111                '<div class="wrapper_video"><video ' + (bVideoAutoPlay ? 'autoplay ' : '') + 'autobuffer playsinline webkit-playsinline id="player_' +
112                  videoID +
113                  '" class="video ' +
114                  videoClass +
115                  '"' +
116                  (bVideoLoop ? " loop " : "") +
117                  (bVideoSoundDisabled ? " muted " : "") +
118                  '><source src="' +
119                  videoPlayerSrc +
120                  '" type=\'video/mp4; codecs="avc1.42E01E, mp4a.40.2"\' /><p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video</p></iframe></div>'
121              );
122            }
123          }
124
125          if (typeof players !== "undefined" && players) {
126            players[videoID] = {
127              id: "player_" + videoID,
128              mute: bVideoSoundDisabled,
129              loop: bVideoLoop,
130              cover: bVideoCover,
131              videoPlayer: videoPlayer,
132              slideIndex: slideActiveIndex,
133              playing: false,
134              clones: videoIDs,
135              videoWidth: videoWidth,
136              videoHeight: videoHeight,
137              videoProportion: videoWidth && videoHeight ? videoWidth / videoHeight : false,
138              src: videoPlayerSrc,
139            };
140
141            if (bVideoPlayerYoutube) {
142              window[players[videoID].id] = new YT.Player(players[videoID].id, {
143                events: {
144                  onReady: function (e) {
145                    if (videoID) {
146                      var mute = players[videoID].mute;
147                      var cover = players[videoID].cover;
148                      var $slide = $("#player_" + videoID).closest(".main-slider__item");
149                      var hidden = !$("#player_" + videoID).closest(".swiper-slide-active").length;
150                      // var hidden = !$("#player_" + videoID).closest(".owl-item.active").length;
151                      // console.log("onReady", videoID, hidden);
152
153                      // mute sound
154                      if (mute || hidden) {
155                        window[players[videoID].id].mute();
156                      }
157
158                      // cover video
159                      if (cover) {
160                        // get video`s original size
161                        if (!players[videoID].videoProportion) {
162                          var embedHtml = e.target.getVideoEmbedCode();
163                          if (embedHtml.length) {
164                            var match = embedHtml.match(/width="(\d*)"[^>]*height="(\d*)"/);
165                            if (match !== null) {
166                              var videoWidth = match[1];
167                              var videoHeight = match[2];
168
169                              players[videoID].videoWidth = videoWidth;
170                              players[videoID].videoHeight = videoHeight;
171                              players[videoID].videoProportion = videoWidth / videoHeight;
172
173                              $slide.find(".video").attr("data-video_proportion", players[videoID].videoProportion);
174                            }
175                          }
176                        }
177
178                        CoverPlayer();
179                      }
180
181                      if (hidden) {
182                        // not start hidden video playing
183                        // console.log("pause hidden", videoID);
184                        setTimeout(function () {
185                          e.target.pauseVideo();
186                        }, 100);
187                      } else {
188                        // stop slider
189                        // console.log("play visible", videoID);
190                        pauseMainBanner();
191                        window[players[videoID].id].seekTo(0, true);
192                        //e.target.playVideo();
193                      }
194
195                      // update slide class
196                      $slide.addClass("started");
197                      // $slide.removeClass('loading')
198                    }
199                  },
200                  onStateChange: function (e) {
201                    if (videoID) {
202                      var loop = players[videoID].loop;
203                      var $slide = $("#player_" + videoID).closest(".main-slider__item");
204                      var hidden = !$("#player_" + videoID).closest(".swiper-slide-active").length;
205                      // var hidden = !$("#player_" + videoID).closest(".owl-item.active").length;
206                      // console.log("onStateChange", videoID, hidden, e.data);
207
208                      if (!hidden) {
209                        if (e.data === YT.PlayerState.PLAYING) {
210                          players[videoID].playing = true;
211                          setSlideClasses(videoID, true);
212
213                          // stop slider
214                          pauseMainBanner();
215
216                          var videoClones = players[videoID].clones;
217                          for (var j in videoClones) {
218                            if (videoClones[j] != videoID) {
219                              if (players[videoClones[j]].playing) {
220                                // console.log("pause one of clone", videoClones[j]);
221                                window[players[videoClones[j]].id].pauseVideo();
222                              }
223                            }
224                          }
225
226                          //e.target.playVideo();
227                        } else if (e.data === YT.PlayerState.PAUSED) {
228                          players[videoID].playing = false;
229
230                          // sync time in cloned players & pause
231                          var time = Math.floor(window[players[videoID].id].getCurrentTime() * 10) / 10;
232
233                          setSlideClasses(videoID, false);
234
235                          window[players[videoID].id].seekTo(time, true);
236
237                          var videoClones = players[videoID].clones;
238                          for (var j in videoClones) {
239                            if (videoClones[j] != videoID) {
240                              if (players[videoClones[j]].playing) {
241                                // console.log("pause one of clone", videoClones[j]);
242                                window[players[videoClones[j]].id].pauseVideo();
243                              }
244
245                              if ("getCurrentTime" in window[players[videoClones[j]].id]) {
246                                window[players[videoClones[j]].id].seekTo(time, true);
247                              }
248                            }
249                          }
250
251                          playMainBanner();
252                        } else if (e.data === YT.PlayerState.ENDED) {
253                          players[videoID].playing = false;
254                          if (loop) {
255                            e.target.playVideo();
256                          } else {
257                            // play slider
258                            playMainBanner();
259                          }
260                        } else if (e.data === YT.PlayerState.UNSTARTED) {
261                          players[videoID].playing = false;
262                          setSlideClasses(videoID, false);
263                          // window[players[videoID].id].mute()
264                          e.target.playVideo();
265                        }
266                      } else {
267                        players[videoID].playing = false;
268                        setSlideClasses(videoID, false);
269                      }
270                    }
271                  },
272                },
273              });
274            } else if (bVideoPlayerVimeo) {
275              window[players[videoID].id] = new Vimeo.Player(document.getElementById(players[videoID].id), {
276                autopause: false,
277                byline: false,
278                loop: false,
279                title: false,
280              });
281              window[players[videoID].id].on("loaded", onVimeoPlayerReady);
282              window[players[videoID].id].on("play", onVimeoPlayerStateChange);
283              window[players[videoID].id].on("pause", onVimeoPlayerStateChange);
284              window[players[videoID].id].on("ended", onVimeoPlayerStateChange);
285            } else if (bVideoPlayerRutube) {
286              document.getElementById(players[videoID].id).onload = function (e) {
287                var videoID = this.id.replace("player_", "");
288                players[videoID].contentWindow = this.contentWindow;
289                onRutubePlayerReady(videoID);
290              };
291            } else if (bVideoPlayerHtml5) {
292              document.getElementById(players[videoID].id).addEventListener("loadeddata", onHtml5PlayerReady);
293              document.getElementById(players[videoID].id).addEventListener("play", onHtml5PlayerStateChange);
294              document.getElementById(players[videoID].id).addEventListener("pause", onHtml5PlayerStateChange);
295              document.getElementById(players[videoID].id).addEventListener("ended", onHtml5PlayerStateChange);
296            }
297          }
298        });
299      };
300
301      if (!bVideoPlayerHtml5) {
302        var obPlayerVariable = "";
303        var fnPlayerVariable = "";
304        if (typeof window["YoutubePlayerScriptLoaded"] === "undefined") {
305          window["YoutubePlayerScriptLoaded"] = false;
306        }
307        if (typeof window["VimeoPlayerScriptLoaded"] === "undefined") {
308          window["VimeoPlayerScriptLoaded"] = false;
309        }
310        if (typeof window["RutubePlayerListnersAdded"] === "undefined") {
311          window["RutubePlayerListnersAdded"] = false;
312        }
313
314        // load script
315        if (bVideoPlayerYoutube) {
316          obPlayerVariable = "YT";
317          fnPlayerVariable = "Player";
318          if (!window["YoutubePlayerScriptLoaded"]) {
319            var script = document.createElement("script");
320            script.src = "https://www.youtube.com/iframe_api";
321            var firstScriptTag = document.getElementsByTagName("script")[0];
322            firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
323            window["YoutubePlayerScriptLoaded"] = true;
324          }
325        } else if (bVideoPlayerVimeo) {
326          obPlayerVariable = "Vimeo";
327          if (!window["VimeoPlayerScriptLoaded"]) {
328            var script = document.createElement("script");
329            script.src = "https://player.vimeo.com/api/player.js";
330            (document.head || document.documentElement).appendChild(script);
331            window["VimeoPlayerScriptLoaded"] = true;
332          }
333        } else if (bVideoPlayerRutube) {
334          if (!window["RutubePlayerListnersAdded"]) {
335            window.addEventListener("message", function (e) {
336              if (e.origin.indexOf("rutube.ru") !== -1) {
337                var message = JSON.parse(e.data);
338                if (typeof message === "object" && message) {
339                  if (typeof message.type !== "undefined" && message.type) {
340                    var videoID = false;
341
342                    for (var j in players) {
343                      if (typeof players[j].contentWindow !== "undefined") {
344                        if (players[j].contentWindow == e.source) {
345                          videoID = j;
346                          break;
347                        }
348                      }
349                    }
350
351                    if (videoID) {
352                      switch (message.type) {
353                        case "player:changeState":
354                          onRutubePlayerStateChange(videoID, message.data.state);
355                          break;
356                        case "player:currentTime":
357                          onRutubePlayerCurrentTime(videoID, message.data.time);
358                          break;
359                      }
360                    }
361                  }
362                }
363              }
364            });
365          }
366        }
367
368        if (!obPlayerVariable.length) {
369          InitPlayer();
370        } else {
371          // wait player class
372          if (typeof window[obPlayerVariable] === "object") {
373            if (
374              !fnPlayerVariable.length ||
375              (fnPlayerVariable.length && typeof window[obPlayerVariable][fnPlayerVariable] === "function")
376            ) {
377              InitPlayer();
378            }
379          } else {
380            var waitPlayerInterval = setInterval(function () {
381              if (typeof window[obPlayerVariable] === "object") {
382                if (
383                  !fnPlayerVariable.length ||
384                  (fnPlayerVariable.length && typeof window[obPlayerVariable][fnPlayerVariable] === "function")
385                ) {
386                  clearInterval(waitPlayerInterval);
387
388                  InitPlayer();
389                }
390              }
391            }, 50);
392          }
393        }
394      } else {
395        InitPlayer();
396      }
397    } else {
398      // console.log(players);
399      // pause video
400      if (typeof players !== "undefined" && players) {
401        for (var j in players) {
402          if (typeof window[players[j].id] == "object") {
403            if (players[j].playing) {
404              if (players[j].videoPlayer === "YOUTUBE") {
405                // console.log("pause", j);
406                window[players[j].id].pauseVideo();
407              } else if (players[j].videoPlayer === "VIMEO") {
408                window[players[j].id].pause();
409              } else if (players[j].videoPlayer === "RUTUBE") {
410                document.getElementById(players[j].id).contentWindow.postMessage(
411                  JSON.stringify({
412                    type: "player:pause",
413                    data: {},
414                  }),
415                  "*"
416                );
417              } else if (players[j].videoPlayer === "HTML5") {
418                document.getElementById(players[j].id).pause();
419              }
420            } else if (players[j].slideIndex == slideActiveIndex) {
421              if (players[j].videoPlayer === "YOUTUBE") {
422                if (typeof window[players[j].id]["playVideo"] == "function") {
423                  window[players[j].id].playVideo();
424                }
425              } else if (players[j].videoPlayer === "VIMEO") {
426                window[players[j].id].play();
427              } else if (players[j].videoPlayer === "RUTUBE") {
428                document.getElementById(players[j].id).contentWindow.postMessage(
429                  JSON.stringify({
430                    type: "player:play",
431                    data: {},
432                  }),
433                  "*"
434                );
435              } else if (players[j].videoPlayer === "HTML5") {
436                document.getElementById(players[j].id).play();
437              }
438            }
439          }
440        }
441      }
442    }
443  }
444}
445
446var CoverPlayer = function () {
447  $(".banners-big .video.cover:visible").each(function () {
448    // var $slide = $(this).closest(".main-slider__item");
449    var $slide = $(this).closest(".wrapper_video");
450    var slideHeight = $slide[0].getBoundingClientRect().height; // outer height with padding
451    var slideWidth = $slide[0].getBoundingClientRect().width;
452    var videoProportion = $(this).attr("data-video_proportion");
453    if (videoProportion === undefined) {
454      videoProportion = 16 / 9;
455    }
456
457    // set video width = 100% of slide width
458    var videoWidth = slideWidth;
459    // calculate video height proportional
460    var videoHeight = slideWidth / videoProportion;
461    // video minimal  height = 100% slide height
462    if (videoHeight < slideHeight) {
463      // increase video width proportional
464      videoWidth = slideHeight * videoProportion;
465      videoHeight = slideHeight;
466    }
467
468    $(this).width(videoWidth).height(videoHeight);
469  });
470};
471
472function onVimeoPlayerReady(e) {
473  var videoID = this.element.id.replace("player_", "");
474  if (videoID) {
475    var mute = players[videoID].mute;
476    var cover = players[videoID].cover;
477    //var clone = players[videoID].clone;
478    var $slide = $("#player_" + videoID).closest(".main-slider__item");
479    var clone = $("#player_" + videoID).closest(".main-slider__item:not(.swiper-slide-active)").length;
480    // var clone = $("#player_" + videoID).closest(".owl-item:not(.active)").length;
481
482    // mute sound
483    if (mute || clone) {
484      window[players[videoID].id].setVolume(0);
485    }
486
487    // cover video
488    if (cover) {
489      // get video`s original size
490      if (!players[videoID].videoProportion) {
491        var widthPromise = window[players[videoID].id].getVideoWidth();
492        var heightPromise = window[players[videoID].id].getVideoHeight();
493        widthPromise.then(function (value) {
494          var videoWidth = value;
495
496          heightPromise.then(function (value) {
497            var videoHeight = value;
498
499            players[videoID].videoWidth = videoWidth;
500            players[videoID].videoHeight = videoHeight;
501            players[videoID].videoProportion = videoWidth / videoHeight;
502
503            $slide.find(".video").attr("data-video_proportion", players[videoID].videoProportion);
504
505            CoverPlayer();
506          });
507        });
508      }
509    }
510
511    // not start clone video playing
512    if (clone) {
513      setTimeout(function () {
514        window[players[videoID].id].pause();
515      }, 100);
516    } else {
517      // stop slider
518      pauseMainBanner();
519
520      // start video
521      var promise = window[players[videoID].id].play();
522      if (typeof promise !== "undefined") {
523        promise.catch(function () {
524          setTimeout(function () {
525            window[players[videoID].id].setVolume(0);
526            window[players[videoID].id].play();
527          }, 100);
528        });
529      }
530    }
531
532    // update slide class
533    $slide.addClass("started");
534    // $slide.removeClass('loading')
535  }
536}
537
538function onVimeoPlayerStateChange(e) {
539  var videoID = this.element.id.replace("player_", "");
540  if (videoID) {
541    var cover = players[videoID].cover;
542    //var clone = players[videoID].clone;
543    var loop = players[videoID].loop;
544    var slideIndex = players[videoID].slideIndex;
545    var clone = $("#player_" + videoID).closest(".main-slider__item:not(.swiper-slide-active)").length;
546    // var clone = $("#player_" + videoID).closest(".owl-item:not(.active)").length;
547
548    window[players[videoID].id].getPaused().then(function (paused) {
549      if (paused) {
550        players[videoID].playing = false;
551        setSlideClasses(videoID, false);
552
553        // sync time in cloned players & pause
554        window[players[videoID].id].getCurrentTime().then(function (seconds) {
555          var time = Math.floor(seconds * 10) / 10;
556          window[players[videoID].id].setCurrentTime(time).then(function (seconds) {
557            for (var j in players) {
558              if (
559                players[j].slideIndex == slideIndex &&
560                (j != videoID || (clone && j == videoID)) &&
561                window[players[j].id]
562              ) {
563                window[players[j].id].pause();
564                window[players[j].id].setCurrentTime(time).then(function (seconds) {});
565              }
566            }
567          });
568        });
569      } else {
570        setSlideClasses(videoID, true);
571        window[players[videoID].id].getEnded().then(function (ended) {
572          if (ended) {
573            players[videoID].playing = false;
574            if (loop) {
575              window[players[videoID].id].play();
576            } else {
577              // play slider
578              playMainBanner();
579            }
580          } else {
581            players[videoID].playing = true;
582
583            // stop slider
584            pauseMainBanner();
585          }
586        });
587      }
588    });
589  }
590}
591
592function onRutubePlayerReady(videoID) {
593  if (videoID) {
594    var mute = players[videoID].mute;
595    var cover = players[videoID].cover;
596    //var clone = players[videoID].clone;
597    var player = document.getElementById(players[videoID].id);
598    var $slide = $("#player_" + videoID).closest(".main-slider__item");
599    var clone = $(player).closest(".main-slider__item:not(.swiper-slide-active)").length;
600    // var clone = $(player).closest(".owl-item:not(.active)").length;
601
602    // mute sound
603    if (mute || clone) {
604      player.contentWindow.postMessage(
605        JSON.stringify({
606          type: "player:mute",
607          data: {},
608        }),
609        "*"
610      );
611    }
612
613    // cover video
614    if (cover) {
615      CoverPlayer();
616    }
617
618    // not start clone video playing
619    if (clone) {
620      setTimeout(function () {
621        player.contentWindow.postMessage(
622          JSON.stringify({
623            type: "player:pause",
624            data: {},
625          }),
626          "*"
627        );
628      }, 100);
629    } else {
630      // stop slider
631      pauseMainBanner();
632
633      player.contentWindow.postMessage(
634        JSON.stringify({
635          type: "player:play",
636          data: {},
637        }),
638        "*"
639      );
640    }
641
642    // update slide class
643    $slide.addClass("started");
644    // $slide.removeClass('loading')
645  }
646}
647
648function onRutubePlayerCurrentTime(videoID, time) {
649  if (videoID) {
650    players[videoID].time = time;
651  }
652}
653
654function onRutubePlayerStateChange(videoID, state) {
655  if (videoID) {
656    //var clone = players[videoID].clone;
657    var loop = players[videoID].loop;
658    var slideIndex = players[videoID].slideIndex;
659    var player = document.getElementById(players[videoID].id);
660    var clone = $(player).closest(".main-slider__item:not(.swiper-slide-active)").length;
661    // var clone = $(player).closest(".owl-item:not(.active)").length;
662
663    if (state === "playing") {
664      setSlideClasses(videoID, true);
665      players[videoID].playing = true;
666
667      // stop slider
668      pauseMainBanner();
669    } else if (state === "paused") {
670      setSlideClasses(videoID, false);
671      players[videoID].playing = false;
672
673      // sync time in cloned players & pause
674      var time = Math.floor(players[videoID].time * 10) / 10;
675      player.contentWindow.postMessage(
676        JSON.stringify({
677          type: "player:setCurrentTime",
678          data: { time: time },
679        }),
680        "*"
681      );
682      for (var j in players) {
683        if (
684          players[j].slideIndex == slideIndex &&
685          (j != videoID || (clone && j == videoID)) &&
686          document.getElementById(players[j].id)
687        ) {
688          document.getElementById(players[j].id).contentWindow.postMessage(
689            JSON.stringify({
690              type: "player:pause",
691              data: {},
692            }),
693            "*"
694          );
695          document.getElementById(players[j].id).contentWindow.postMessage(
696            JSON.stringify({
697              type: "player:setCurrentTime",
698              data: { time: time },
699            }),
700            "*"
701          );
702        }
703      }
704    } else if (state === "stopped") {
705      setSlideClasses(videoID, false);
706      players[videoID].playing = false;
707      if (loop) {
708        player.contentWindow.postMessage(
709          JSON.stringify({
710            type: "player:play",
711            data: {},
712          }),
713          "*"
714        );
715      } else {
716        // play slider
717        playMainBanner();
718      }
719    }
720  }
721}
722
723function onHtml5PlayerReady(e) {
724  var videoID = e.target.id.replace("player_", "");
725  if (videoID) {
726    var mute = players[videoID].mute;
727    var cover = players[videoID].cover;
728    var clone = $(e.target).closest(".main-slider__item:not(.swiper-slide-active)").length;
729    // var clone = $(e.target).closest(".owl-item:not(.active)").length;
730    var $slide = $("#player_" + videoID).closest(".main-slider__item");
731
732    // mute sound
733    if (mute || clone) {
734      $("#" + players[videoID].id).prop("muted", true);
735    }
736
737    // cover video
738    if (cover) {
739      // get video`s original size
740      if (!players[videoID].videoProportion) {
741        var videoWidth = $slide.find(".video")[0].videoWidth;
742        var videoHeight = $slide.find(".video")[0].videoHeight;
743
744        players[videoID].videoWidth = videoWidth;
745        players[videoID].videoHeight = videoHeight;
746        players[videoID].videoProportion = videoWidth / videoHeight;
747
748        $slide.find(".video").attr("data-video_proportion", players[videoID].videoProportion);
749      }
750
751      CoverPlayer();
752    }
753
754    // not start clone video playing
755    if (clone) {
756      // console.log("stop clone");
757      e.target.pause();
758    } else {
759      // stop slider
760      pauseMainBanner();
761
762      var promise = e.target.play();
763      if (typeof promise !== "undefined") {
764        promise.catch(function () {
765          setTimeout(function () {
766            $("#" + players[videoID].id).prop("muted", true);
767            e.target.play();
768          }, 100);
769        });
770      }
771    }
772
773    // update slide class
774    $slide.addClass("started");
775    // $slide.removeClass('loading')
776  }
777}
778
779function onHtml5PlayerStateChange(e) {
780  var videoID = e.target.id.replace("player_", "");
781  if (videoID) {
782    var cover = players[videoID].cover;
783    var clone = $(e.target).closest(".main-slider__item:not(.swiper-slide-active)").length;
784    // var clone = $(e.target).closest(".owl-item:not(.active)").length;
785    var loop = players[videoID].loop;
786    var slideIndex = players[videoID].slideIndex;
787
788    if (e.target.paused && !e.target.ended) {
789      players[videoID].playing = false;
790
791      setSlideClasses(videoID, false);
792
793      // sync time in cloned players & pause
794      var time = Math.floor(e.target.currentTime * 10) / 10;
795      e.target.currentTime = time;
796      for (var j in players) {
797        if (
798          players[j].slideIndex == slideIndex &&
799          (j != videoID || (clone && j == videoID)) &&
800          document.getElementById(players[j].id)
801        ) {
802          // console.log("stop some clone");
803          document.getElementById(players[j].id).pause();
804          document.getElementById(players[j].id).currentTime = time;
805        }
806      }
807      pauseMainBanner(); //need for correct autoplay timeout
808      playMainBanner();
809    } else if (e.target.ended) {
810      players[videoID].playing = false;
811			setSlideClasses(videoID, false);
812			
813      if (loop) {
814        e.target.play();
815      } else {
816        // play slider
817        pauseMainBanner(); //need for correct autoplay timeout
818        playMainBanner();
819        nextSlideMainBanner();
820      }
821    } else {
822      players[videoID].playing = true;
823      setSlideClasses(videoID, true);
824      // stop slider
825      pauseMainBanner();
826    }
827  }
828}
829
830function setSlideClasses(id, active) {
831  const $playerSlide =  document.querySelector(`#player_${id}`).closest('.main-slider__item');
832  const playerSlideButtons = $playerSlide.querySelectorAll('.btn-video');
833
834  const spritePath = `${arAsproOptions.SITE_TEMPLATE_PATH}/images/svg/video_buttons_sprite.svg`;
835
836	$playerSlide.classList.toggle('loading', active);
837	playerSlideButtons.forEach((button) => {
838		button.classList.toggle('loading', active);
839
840		const playerSliderButtonSprite = button.querySelector('use');
841		if (playerSliderButtonSprite) {
842			const href = active ? `${spritePath}#video-pause-13-13` : `${spritePath}#video-play-13-13`;
843			playerSliderButtonSprite.setAttribute('href', href);
844		}
845	});
846}
847
848waitYTPlayer = function (delay, callback) {
849  if (typeof YT !== "undefined" && YT && YT.Player) {
850    if (typeof callback == "function") callback();
851  } else {
852    setTimeout(function () {
853      waitYTPlayer(delay, callback);
854    }, delay);
855  }
856};
857
858// click on HTML5 video
859$(document).on("click", "video.video", function (e) {
860  var videoID = e.target.id.replace("player_", "");
861  if (videoID) {
862    if (players[videoID].playing) {
863      e.target.pause();
864    } else {
865      e.target.play();
866    }
867  }
868});
869
870// START VIDEO BUTTON
871$(document).on("click", ".banners-big .btn-video", function (e) {
872  e.stopPropagation();
873  startMainBannerSlideVideo($(this).closest(".main-slider__item"));
874});
875
876// START VIDEO BY BANNER OR GOTO LINK
877$(document).on("click", ".banners-big .banners-big__item", function (e) {
878  var $item = $(this);
879  var vvideo = $item.hasClass("vvideo");
880  var wurl = $item.hasClass("wurl");
881
882  if (!$(e.target).hasClass("btn")) {
883    if (wurl) {
884      var href = $item.find(".target").attr("href");
885      if (href.length) {
886        var target = $item.find(".target").attr("target");
887        if (typeof target === "undefined" || target === "_self") {
888          location.href = href;
889        } else {
890          window.open(href);
891        }
892      }
893    } else {
894      if (vvideo) {
895        e.stopPropagation();
896        $(this).find(".btn-video").trigger("click");
897      }
898    }
899  }
900});
901
902getRandomInt = function (min, max) {
903  return Math.floor(Math.random() * (max - min)) + min;
904};
905
906var ignoreResize = [];
907
908BX.addCustomEvent("onWindowResize", function (eventdata) {
909  try {
910    CoverPlayer();
911  } catch (e) {
912  } finally {
913    ignoreResize.pop();
914  }
915});
916
917BX.addCustomEvent("onSlideEnd", function (eventdata) {
918  try {
919    ignoreResize.push(true);
920    if (eventdata) {
921      var slider = eventdata.slider;
922      if (slider) {
923        setTimeout(function () {
924          $(".banners-big.front .btn-video, .banners-big.front .banners-big__item").removeClass("loading");
925        }, 300);
926      }
927    }
928  } catch (e) {
929  } finally {
930    ignoreResize.pop();
931  }
932});
933
934var lastSlideIndex;
935BX.addCustomEvent("onSlide", function (eventdata) {
936  try {
937    ignoreResize.push(true);
938    if (eventdata) {
939      var slider = eventdata.slider;
940      if (slider) {
941        /*if (slider.data("owl.carousel")) {
942          var curSlideIndex = slider.data("owl.carousel").current();
943          var curSlide = slider.find(".owl-item").eq(curSlideIndex).find(".banners-big__item");
944        } else if (slider.find(".owl-item.active").length) {
945          var curSlide = slider.find(".owl-item.active").first().find(".banners-big__item");
946        } else {
947          var curSlide = slider.find(".owl-item:not(.cloned)").eq(0).find(".banners-big__item");
948        }*/
949
950        let curSlide = '';
951        if (slider.data("swiper")) {
952          const curSlideIndex = slider.data("swiper").realIndex;
953          curSlide = slider.find(`.main-slider__item[data-slide_index=${curSlideIndex}]`);
954        } else if (slider.find(".swiper-slide-active").length) {
955          curSlide = slider.find(".swiper-slide-active").first();
956        } else {
957          curSlide = slider.find(".main-slider__item:not(.swiper-slide-duplicate)").eq(0);
958        }        
959
960        if (!curSlide.length) {          
961          curSlide = slider.find(".box.swiper-slide-active");        
962        }
963        var dataSlideIndex = curSlide.attr("data-slide_index");
964
965        // prevent overlaping events of slider
966        if (lastSlideIndex === dataSlideIndex) return;
967        lastSlideIndex = dataSlideIndex;
968
969        if (typeof curSlide !== "undefined" && curSlide.length) {
970          var slidesIndexesWithVideo = slider.data("slidesIndexesWithVideo");
971          if (typeof slidesIndexesWithVideo === "undefined") {
972            slidesIndexesWithVideo = [];
973          }
974
975          var bVideoVisible = slidesIndexesWithVideo.indexOf(dataSlideIndex) != -1;
976          if (bVideoVisible) {
977            slider.addClass("video_visible");
978          } else {
979            slider.removeClass("video_visible");
980          }
981
982          setTimeout(function () {
983            CoverPlayer();
984          }, 200);
985
986          // pause play video
987          if (typeof players !== "undefined" && players) {
988            for (var j in players) {
989              if (/*players[j].playing && */players[j].slideIndex != dataSlideIndex) {
990                if (typeof window[players[j].id] == "object") {
991                  if (players[j].videoPlayer === "YOUTUBE") {
992                    window[players[j].id].pauseVideo();
993                  } else if (players[j].videoPlayer === "VIMEO") {
994                    window[players[j].id].pause();
995                  } else if (players[j].videoPlayer === "RUTUBE") {
996                    document.getElementById(players[j].id).contentWindow.postMessage(
997                      JSON.stringify({
998                        type: "player:pause",
999                        data: {},
1000                      }),
1001                      "*"
1002                    );
1003                  } else if (players[j].videoPlayer === "HTML5") {
1004                    document.getElementById(players[j].id).pause();
1005                  }
1006                }
1007              }
1008            }
1009          }
1010
1011          // autoplay video
1012          var bVideoAutoPlay = curSlide.attr("data-video_autoplay") == 1;
1013          if (bVideoAutoPlay) {
1014            startMainBannerSlideVideo(curSlide);
1015          }
1016        }
1017
1018        if (curSlide.find("video").length && !curSlide.find(".btn-video").length) {
1019          var videoID = curSlide.find("video").attr("id");
1020          document.getElementById(videoID).play();
1021        }
1022      }
1023    }
1024  } catch (e) {
1025  } finally {
1026    ignoreResize.pop();
1027  }
1028});

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.