PageSourceSearch

https://vodovoz.ru/local/templates/aspro-lite/js/video_banner.js

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

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.