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.