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