PageSourceSearch

https://www.venusclinic.ru/bitrix/templates/aspro-allcorp3medc/js/video_banner.js

js venusclinic.ru collected 2026-10-04 11:10:20 UTC 37,437 bytes, 1,021 lines download raw bytes

1var players = {};
2
3function pauseMainBanner() {
4  // $(".banners-big .owl-carousel").trigger("stop.owl.autoplay");
5  $(".banners-big .main-slider").data("swiper").autoplay.stop();
6}
7
8function playMainBanner() {
9  /*$(".banners-big .owl-carousel").trigger("play.owl.autoplay");
10  if ($(".banners-big .owl-carousel").is(":hover")) {
11    $(".banners-big .owl-carousel").trigger("mouseover.owl.autoplay");
12  }
13  */
14  if ($(".banners-big .main-slider").data("swiper").params.autoplay.enabled) {
15    $(".banners-big .main-slider").data("swiper").autoplay.start();
16  }
17}
18
19function startMainBannerSlideVideo($slide) {
20  var slideActiveIndex = $slide.attr("data-slide_index");
21  var $slides = $slide.closest(".main-slider").find('.main-slider__item[data-slide_index="' + slideActiveIndex + '"]'); // current slide & cloned
22  var videoSource = $slide.attr("data-video_source");
23
24  if (videoSource) {
25    $slides.addClass("loading");
26    pauseMainBanner();
27
28    // var $slider = $slide.closest(".owl-carousel");
29    var $slider = $slide.closest(".main-slider");
30    var slidesIndexesWithVideo = $slider.data("slidesIndexesWithVideo");
31    if (typeof slidesIndexesWithVideo === "undefined") {
32      slidesIndexesWithVideo = [];
33    }
34    slidesIndexesWithVideo.push(slideActiveIndex);
35    $slider.data("slidesIndexesWithVideo", slidesIndexesWithVideo);
36
37    var videoPlayerSrc = $slide.attr("data-video_src");
38    var videoSoundDisabled = $slide.attr("data-video_disable_sound");
39    var bVideoSoundDisabled = videoSoundDisabled == 1;
40    var videoLoop = $slide.attr("data-video_loop");
41    var bVideoLoop = videoLoop == 1;
42    var bVideoAutoPlay = $slide.attr("data-video_autoplay") == 1;
43    var videoCover = $slide.attr("data-video_cover");
44    var bVideoCover = videoCover == 1;
45    var videoUnderText = $slide.attr("data-video_under_text");
46    var bVideoUnderText = videoUnderText == 1;
47    var videoPlayer = $slide.attr("data-video_player");
48    var bVideoPlayerYoutube = videoPlayer === "YOUTUBE";
49    var bVideoPlayerVimeo = videoPlayer === "VIMEO";
50    var bVideoPlayerRutube = videoPlayer === "RUTUBE";
51    var bVideoPlayerHtml5 = videoPlayer === "HTML5";
52    var videoWidth = bVideoPlayerHtml5 ? false : $slide.attr("data-video_width");
53    var videoHeight = bVideoPlayerHtml5 ? false : $slide.attr("data-video_height");
54
55    if (videoPlayerSrc && !$slide.find(".video").length) {
56      var InitPlayer = function () {
57        // prepare videoID
58        var videoIDs = [];
59        for (var i = 0; i < $slides.length; ++i) {
60          var videoID = getRandomInt(100, 1000);
61          videoIDs.push(videoID);
62        }
63
64        // console.log("InitPlayer", videoIDs);
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.prepend(
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.prepend(
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.prepend(
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.prepend(
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 slideHeight = $slide[0].getBoundingClientRect().height; // outer height with padding
450    var slideWidth = $slide[0].getBoundingClientRect().width;
451    var videoProportion = $(this).attr("data-video_proportion");
452    if (videoProportion === undefined) {
453      videoProportion = 16 / 9;
454    }
455
456    // set video width = 100% of slide width
457    var videoWidth = slideWidth;
458    // calculate video height proportional
459    var videoHeight = slideWidth / videoProportion;
460    // video minimal  height = 100% slide height
461    if (videoHeight < slideHeight) {
462      // increase video width proportional
463      videoWidth = slideHeight * videoProportion;
464      videoHeight = slideHeight;
465    }
466
467    $(this).width(videoWidth).height(videoHeight);
468  });
469};
470
471function onVimeoPlayerReady(e) {
472  var videoID = this.element.id.replace("player_", "");
473  if (videoID) {
474    var mute = players[videoID].mute;
475    var cover = players[videoID].cover;
476    //var clone = players[videoID].clone;
477    var $slide = $("#player_" + videoID).closest(".main-slider__item");
478    var clone = $("#player_" + videoID).closest(".main-slider__item:not(.swiper-slide-active)").length;
479    // var clone = $("#player_" + videoID).closest(".owl-item:not(.active)").length;
480
481    // mute sound
482    if (mute || clone) {
483      window[players[videoID].id].setVolume(0);
484    }
485
486    // cover video
487    if (cover) {
488      // get video`s original size
489      if (!players[videoID].videoProportion) {
490        var widthPromise = window[players[videoID].id].getVideoWidth();
491        var heightPromise = window[players[videoID].id].getVideoHeight();
492        widthPromise.then(function (value) {
493          var videoWidth = value;
494
495          heightPromise.then(function (value) {
496            var videoHeight = value;
497
498            players[videoID].videoWidth = videoWidth;
499            players[videoID].videoHeight = videoHeight;
500            players[videoID].videoProportion = videoWidth / videoHeight;
501
502            $slide.find(".video").attr("data-video_proportion", players[videoID].videoProportion);
503
504            CoverPlayer();
505          });
506        });
507      }
508    }
509
510    // not start clone video playing
511    if (clone) {
512      setTimeout(function () {
513        window[players[videoID].id].pause();
514      }, 100);
515    } else {
516      // stop slider
517      pauseMainBanner();
518
519      // start video
520      var promise = window[players[videoID].id].play();
521      if (typeof promise !== "undefined") {
522        promise.catch(function () {
523          setTimeout(function () {
524            window[players[videoID].id].setVolume(0);
525            window[players[videoID].id].play();
526          }, 100);
527        });
528      }
529    }
530
531    // update slide class
532    $slide.addClass("started");
533    // $slide.removeClass('loading')
534  }
535}
536
537function onVimeoPlayerStateChange(e) {
538  var videoID = this.element.id.replace("player_", "");
539  if (videoID) {
540    var cover = players[videoID].cover;
541    //var clone = players[videoID].clone;
542    var loop = players[videoID].loop;
543    var slideIndex = players[videoID].slideIndex;
544    var clone = $("#player_" + videoID).closest(".main-slider__item:not(.swiper-slide-active)").length;
545    // var clone = $("#player_" + videoID).closest(".owl-item:not(.active)").length;
546
547    window[players[videoID].id].getPaused().then(function (paused) {
548      if (paused) {
549        players[videoID].playing = false;
550        setSlideClasses(videoID, false);
551
552        // sync time in cloned players & pause
553        window[players[videoID].id].getCurrentTime().then(function (seconds) {
554          var time = Math.floor(seconds * 10) / 10;
555          window[players[videoID].id].setCurrentTime(time).then(function (seconds) {
556            for (var j in players) {
557              if (
558                players[j].slideIndex == slideIndex &&
559                (j != videoID || (clone && j == videoID)) &&
560                window[players[j].id]
561              ) {
562                window[players[j].id].pause();
563                window[players[j].id].setCurrentTime(time).then(function (seconds) {});
564              }
565            }
566          });
567        });
568      } else {
569        setSlideClasses(videoID, true);
570        window[players[videoID].id].getEnded().then(function (ended) {
571          if (ended) {
572            players[videoID].playing = false;
573            if (loop) {
574              window[players[videoID].id].play();
575            } else {
576              // play slider
577              playMainBanner();
578            }
579          } else {
580            players[videoID].playing = true;
581
582            // stop slider
583            pauseMainBanner();
584          }
585        });
586      }
587    });
588  }
589}
590
591function onRutubePlayerReady(videoID) {
592  if (videoID) {
593    var mute = players[videoID].mute;
594    var cover = players[videoID].cover;
595    //var clone = players[videoID].clone;
596    var player = document.getElementById(players[videoID].id);
597    var $slide = $("#player_" + videoID).closest(".main-slider__item");
598    var clone = $(player).closest(".main-slider__item:not(.swiper-slide-active)").length;
599    // var clone = $(player).closest(".owl-item:not(.active)").length;
600
601    // mute sound
602    if (mute || clone) {
603      player.contentWindow.postMessage(
604        JSON.stringify({
605          type: "player:mute",
606          data: {},
607        }),
608        "*"
609      );
610    }
611
612    // cover video
613    if (cover) {
614      CoverPlayer();
615    }
616
617    // not start clone video playing
618    if (clone) {
619      setTimeout(function () {
620        player.contentWindow.postMessage(
621          JSON.stringify({
622            type: "player:pause",
623            data: {},
624          }),
625          "*"
626        );
627      }, 100);
628    } else {
629      // stop slider
630      pauseMainBanner();
631
632      player.contentWindow.postMessage(
633        JSON.stringify({
634          type: "player:play",
635          data: {},
636        }),
637        "*"
638      );
639    }
640
641    // update slide class
642    $slide.addClass("started");
643    // $slide.removeClass('loading')
644  }
645}
646
647function onRutubePlayerCurrentTime(videoID, time) {
648  if (videoID) {
649    players[videoID].time = time;
650  }
651}
652
653function onRutubePlayerStateChange(videoID, state) {
654  if (videoID) {
655    //var clone = players[videoID].clone;
656    var loop = players[videoID].loop;
657    var slideIndex = players[videoID].slideIndex;
658    var player = document.getElementById(players[videoID].id);
659    var clone = $(player).closest(".main-slider__item:not(.swiper-slide-active)").length;
660    // var clone = $(player).closest(".owl-item:not(.active)").length;
661
662    if (state === "playing") {
663      setSlideClasses(videoID, true);
664      players[videoID].playing = true;
665
666      // stop slider
667      pauseMainBanner();
668    } else if (state === "paused") {
669      setSlideClasses(videoID, false);
670      players[videoID].playing = false;
671
672      // sync time in cloned players & pause
673      var time = Math.floor(players[videoID].time * 10) / 10;
674      player.contentWindow.postMessage(
675        JSON.stringify({
676          type: "player:setCurrentTime",
677          data: { time: time },
678        }),
679        "*"
680      );
681      for (var j in players) {
682        if (
683          players[j].slideIndex == slideIndex &&
684          (j != videoID || (clone && j == videoID)) &&
685          document.getElementById(players[j].id)
686        ) {
687          document.getElementById(players[j].id).contentWindow.postMessage(
688            JSON.stringify({
689              type: "player:pause",
690              data: {},
691            }),
692            "*"
693          );
694          document.getElementById(players[j].id).contentWindow.postMessage(
695            JSON.stringify({
696              type: "player:setCurrentTime",
697              data: { time: time },
698            }),
699            "*"
700          );
701        }
702      }
703    } else if (state === "stopped") {
704      setSlideClasses(videoID, false);
705      players[videoID].playing = false;
706      if (loop) {
707        player.contentWindow.postMessage(
708          JSON.stringify({
709            type: "player:play",
710            data: {},
711          }),
712          "*"
713        );
714      } else {
715        // play slider
716        playMainBanner();
717      }
718    }
719  }
720}
721
722function onHtml5PlayerReady(e) {
723  var videoID = e.target.id.replace("player_", "");
724  if (videoID) {
725    var mute = players[videoID].mute;
726    var cover = players[videoID].cover;
727    var clone = $(e.target).closest(".main-slider__item:not(.swiper-slide-active)").length;
728    // var clone = $(e.target).closest(".owl-item:not(.active)").length;
729    var $slide = $("#player_" + videoID).closest(".main-slider__item");
730
731    // mute sound
732    if (mute || clone) {
733      $("#" + players[videoID].id).prop("muted", true);
734    }
735
736    // cover video
737    if (cover) {
738      // get video`s original size
739      if (!players[videoID].videoProportion) {
740        var videoWidth = $slide.find(".video")[0].videoWidth;
741        var videoHeight = $slide.find(".video")[0].videoHeight;
742
743        players[videoID].videoWidth = videoWidth;
744        players[videoID].videoHeight = videoHeight;
745        players[videoID].videoProportion = videoWidth / videoHeight;
746
747        $slide.find(".video").attr("data-video_proportion", players[videoID].videoProportion);
748      }
749
750      CoverPlayer();
751    }
752
753    // not start clone video playing
754    if (clone) {
755      // console.log("stop clone");
756      e.target.pause();
757    } else {
758      // stop slider
759      pauseMainBanner();
760
761      var promise = e.target.play();
762      if (typeof promise !== "undefined") {
763        promise.catch(function () {
764          setTimeout(function () {
765            $("#" + players[videoID].id).prop("muted", true);
766            e.target.play();
767          }, 100);
768        });
769      }
770    }
771
772    // update slide class
773    $slide.addClass("started");
774    // $slide.removeClass('loading')
775  }
776}
777
778function onHtml5PlayerStateChange(e) {
779  var videoID = e.target.id.replace("player_", "");
780  if (videoID) {
781    var cover = players[videoID].cover;
782    var clone = $(e.target).closest(".main-slider__item:not(.swiper-slide-active)").length;
783    // var clone = $(e.target).closest(".owl-item:not(.active)").length;
784    var loop = players[videoID].loop;
785    var slideIndex = players[videoID].slideIndex;
786
787    if (e.target.paused && !e.target.ended) {
788      players[videoID].playing = false;
789
790      setSlideClasses(videoID, false);
791
792      // sync time in cloned players & pause
793      var time = Math.floor(e.target.currentTime * 10) / 10;
794      e.target.currentTime = time;
795      for (var j in players) {
796        if (
797          players[j].slideIndex == slideIndex &&
798          (j != videoID || (clone && j == videoID)) &&
799          document.getElementById(players[j].id)
800        ) {
801          // console.log("stop some clone");
802          document.getElementById(players[j].id).pause();
803          document.getElementById(players[j].id).currentTime = time;
804        }
805      }
806      pauseMainBanner(); //need for correct autoplay timeout
807      playMainBanner();
808    } else if (e.target.ended) {
809      players[videoID].playing = false;
810      if (loop) {
811        setSlideClasses(videoID, false);
812        e.target.play();
813      } else {
814        // play slider
815        pauseMainBanner(); //need for correct autoplay timeout
816        playMainBanner();
817      }
818    } else {
819      players[videoID].playing = true;
820      setSlideClasses(videoID, true);
821      // stop slider
822      pauseMainBanner();
823    }
824  }
825}
826
827function setSlideClasses(id, active) {
828  const $playerSlide =  document.querySelector(`#player_${id}`).closest('.main-slider__item');
829  const $playerSlideButton = $playerSlide.querySelector('.banners-big__inner .btn-video');
830  const $playerSliderButtonSprite = $playerSlideButton.querySelector('use');
831
832  const spritePath = `${arAsproOptions.SITE_TEMPLATE_PATH}/images/svg/video_buttons_sprite.svg`;
833
834  if (active) {
835    $playerSlide.classList.add('loading');
836    $playerSlideButton.classList.add('loading');
837    $playerSliderButtonSprite.setAttribute('href', `${spritePath}#video-pause-13-13`);
838  } else {
839    $playerSlide.classList.remove('loading');
840    $playerSlideButton.classList.remove('loading');
841    $playerSliderButtonSprite.setAttribute('href', `${spritePath}#video-play-13-13`);
842  }
843}
844
845waitYTPlayer = function (delay, callback) {
846  if (typeof YT !== "undefined" && YT && YT.Player) {
847    if (typeof callback == "function") callback();
848  } else {
849    setTimeout(function () {
850      waitYTPlayer(delay, callback);
851    }, delay);
852  }
853};
854
855// click on HTML5 video
856$(document).on("click", "video.video", function (e) {
857  var videoID = e.target.id.replace("player_", "");
858  if (videoID) {
859    if (players[videoID].playing) {
860      e.target.pause();
861    } else {
862      e.target.play();
863    }
864  }
865});
866
867// START VIDEO BUTTON
868$(document).on("click", ".banners-big .btn-video", function (e) {
869  e.stopPropagation();
870  startMainBannerSlideVideo($(this).closest(".main-slider__item"));
871});
872
873// START VIDEO BY BANNER OR GOTO LINK
874$(document).on("click", ".banners-big .banners-big__item", function (e) {
875  var $item = $(this);
876  var vvideo = $item.hasClass("vvideo");
877  var wurl = $item.hasClass("wurl");
878
879  if (!$(e.target).hasClass("btn")) {
880    if (wurl) {
881      var href = $item.find(".target").attr("href");
882      if (href.length) {
883        var target = $item.find(".target").attr("target");
884        if (typeof target === "undefined" || target === "_self") {
885          location.href = href;
886        } else {
887          window.open(href);
888        }
889      }
890    } else {
891      if (vvideo) {
892        e.stopPropagation();
893        $(this).find(".btn-video").trigger("click");
894      }
895    }
896  }
897});
898
899getRandomInt = function (min, max) {
900  return Math.floor(Math.random() * (max - min)) + min;
901};
902
903var ignoreResize = [];
904
905BX.addCustomEvent("onWindowResize", function (eventdata) {
906  try {
907    CoverPlayer();
908  } catch (e) {
909  } finally {
910    ignoreResize.pop();
911  }
912});
913
914BX.addCustomEvent("onSlideEnd", function (eventdata) {
915  try {
916    ignoreResize.push(true);
917    if (eventdata) {
918      var slider = eventdata.slider;
919      if (slider) {
920        setTimeout(function () {
921          $(".banners-big.front .btn-video, .banners-big.front .banners-big__item").removeClass("loading");
922        }, 300);
923      }
924    }
925  } catch (e) {
926  } finally {
927    ignoreResize.pop();
928  }
929});
930
931BX.addCustomEvent("onSlide", function (eventdata) {
932  try {
933    ignoreResize.push(true);
934    if (eventdata) {
935      var slider = eventdata.slider;
936      if (slider) {
937        /*if (slider.data("owl.carousel")) {
938          var curSlideIndex = slider.data("owl.carousel").current();
939          var curSlide = slider.find(".owl-item").eq(curSlideIndex).find(".banners-big__item");
940        } else if (slider.find(".owl-item.active").length) {
941          var curSlide = slider.find(".owl-item.active").first().find(".banners-big__item");
942        } else {
943          var curSlide = slider.find(".owl-item:not(.cloned)").eq(0).find(".banners-big__item");
944        }*/
945
946        let curSlide = '';
947        if (slider.data("swiper")) {
948          const curSlideIndex = slider.data("swiper").realIndex;
949          curSlide = slider.find(".main-slider__item").eq(curSlideIndex + 1);
950        } else if (slider.find(".swiper-slide-active").length) {
951          curSlide = slider.find(".swiper-slide-active").first();
952        } else {
953          curSlide = slider.find(".main-slider__item:not(.swiper-slide-duplicate)").eq(0);
954        }
955        
956        if (!curSlide.length) {          
957          curSlide = slider.find(".box.swiper-slide-active");        
958        }
959
960        var dataSlideIndex = curSlide.attr("data-slide_index");
961
962        if (typeof curSlide !== "undefined" && curSlide.length) {
963          var slidesIndexesWithVideo = slider.data("slidesIndexesWithVideo");
964          if (typeof slidesIndexesWithVideo === "undefined") {
965            slidesIndexesWithVideo = [];
966          }
967
968          var bVideoVisible = slidesIndexesWithVideo.indexOf(dataSlideIndex) != -1;
969          if (bVideoVisible) {
970            slider.addClass("video_visible");
971          } else {
972            slider.removeClass("video_visible");
973          }
974
975          setTimeout(function () {
976            CoverPlayer();
977          }, 200);
978
979          // pause play video
980          if (typeof players !== "undefined" && players) {
981            for (var j in players) {
982              if (/*players[j].playing && */players[j].slideIndex != dataSlideIndex) {
983                if (typeof window[players[j].id] == "object") {
984                  if (players[j].videoPlayer === "YOUTUBE") {
985                    window[players[j].id].pauseVideo();
986                  } else if (players[j].videoPlayer === "VIMEO") {
987                    window[players[j].id].pause();
988                  } else if (players[j].videoPlayer === "RUTUBE") {
989                    document.getElementById(players[j].id).contentWindow.postMessage(
990                      JSON.stringify({
991                        type: "player:pause",
992                        data: {},
993                      }),
994                      "*"
995                    );
996                  } else if (players[j].videoPlayer === "HTML5") {
997                    document.getElementById(players[j].id).pause();
998                  }
999                }
1000              }
1001            }
1002          }
1003
1004          // autoplay video
1005          var bVideoAutoPlay = curSlide.attr("data-video_autoplay") == 1;
1006          if (bVideoAutoPlay) {
1007            startMainBannerSlideVideo(curSlide);
1008          }
1009        }
1010
1011        if (curSlide.find("video").length && !curSlide.find(".btn-video").length) {
1012          var videoID = curSlide.find("video").attr("id");
1013          document.getElementById(videoID).play();
1014        }
1015      }
1016    }
1017  } catch (e) {
1018  } finally {
1019    ignoreResize.pop();
1020  }
1021});

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.