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.