PageSourceSearch

https://rusbooks.lv/local/templates/aspro_max/js/video_banner.js

js rusbooks.lv collected 2026-09-30 02:38:56 UTC 31,639 bytes, 1,021 lines download raw bytes

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.