PageSourceSearch

https://ewtn.pl/wp-content/plugins/Stellar-video-player/js/Playlist.js?ver=2.9

js ewtn.pl collected 2026-10-02 12:43:21 UTC 51,072 bytes, 1,257 lines download raw bytes

1var PLAYER = PLAYER || {};
2PLAYER.Playlist = function ($, video, options, mainContainer, element, preloader, preloaderAD, myVideo, canPlay, click_ev, params, pw, deviceAgent, agentID, youtube_array, isMobile) 
3{
4    //constructor
5    var self = this;
6
7	this.myVideo = myVideo;
8    this.VIDEO = video;
9    this.element = element;
10	this.youtube_array = youtube_array;
11	//if youtube playlist/channel fill options
12	if(options.youtubePlaylistID != "" || options.youtubeChannelID != "")
13		options.videos = self.youtube_array;
14    this.canPlay = canPlay;
15    this.CLICK_EV = click_ev;
16	this.params = params;
17    this.isMobile = isMobile;
18    this.preloader = preloader;
19    this.preloaderAD = preloaderAD;
20    this.options = options;
21    this.mainContainer = mainContainer;
22    this.videoid = "VIDEOID";
23    this.adStartTime = "ADSTARTTIME";
24    this.videoAdPlayed = false;
25	this.rand = Math.floor((Math.random() * (options.videos).length) + 0);
26    this.ytQuality = options.youtubeQuality;
27	this.youtubeSTARTED=false;
28    this.deviceAgent = deviceAgent;
29    this.agentID = agentID;
30    this.YTAPI_onPlayerReady = false;
31	this.vimeo_time;
32    this.vimeo_duration;
33	this.scrollingIsOn = false;
34	this.itemHoverOn = false
35
36    this.playlist = $("<div />");
37    this.playlistContent= $("<div />");
38	this.playlistBar= $("<div />");
39	this.playlistBar.addClass("stellar_vp_bg"+" "+this.options.instanceTheme);
40	this.playlist.append(this.playlistBar);
41	
42	this.playlistBarSearch= $("<div />");
43	this.playlistBarSearch.addClass("stellar_vp_bg"+" "+this.options.instanceTheme);
44	this.playlist.append(this.playlistBarSearch);
45	
46	this.nextTxtWrapper = $("<div />")
47	this.playlistBar.append(this.nextTxtWrapper);
48	this.nextTxtWrapper.append('<p class="stellar_vp_nextVideoInPlaylistText stellar_vp_controlsColor'+" "+self.options.instanceTheme+'">' + self.options.nextVideoInPlaylistText + '</p>');
49	
50	this.countTxtWrapper = $("<div />")
51		.addClass("stellar_vp_countTxtWrapper");
52	this.countTxtWrapper.append('<p class="stellar_vp_countVideoInPlaylistText stellar_vp_controlsColor'+" "+self.options.instanceTheme+'">' + '1 of 20' + '</p>');
53	
54	this.controlsBtnsWrapperLeft= $("<div />");
55	this.controlsBtnsWrapperLeft.addClass("stellar_vp_controlsBtnsWrapperLeft");
56	this.VIDEO.controls.append(this.controlsBtnsWrapperLeft);
57	
58	this.lastBtnIcon = $("<span />")
59        .attr("aria-hidden","true")
60        .addClass("fa-stellar")
61        .addClass("stellar-icon-general")
62		.addClass("stellar_vp_controlsColor"+" "+this.options.instanceTheme)
63        .addClass("fa-stellar-step-forward")
64		.attr("id", "stellar_vp_lastBtn")
65    
66	this.firstBtnIcon = $("<span />")
67        .attr("aria-hidden","true")
68        .addClass("fa-stellar")
69        .addClass("stellar-icon-general")
70		.addClass("stellar_vp_controlsColor"+" "+this.options.instanceTheme)
71        .addClass("fa-stellar-step-backward")
72		.attr("id", "stellar_vp_firstBtn")
73
74	this.nextBtnIcon = $("<span />")
75        .attr("aria-hidden","true")
76        .addClass("fa-stellar")
77        .addClass("stellar-icon-general")
78		.addClass("stellar_vp_controlsColor"+" "+this.options.instanceTheme)
79        .addClass("fa-stellar-step-forward")
80		.attr("id", "stellar_vp_nextBtn")
81	
82	this.nextBtnIcon2 = $("<span />")
83        .attr("aria-hidden","true")
84        .addClass("fa-stellar")
85        .addClass("stellar-icon-general")
86		.addClass("stellar_vp_controlsColor"+" "+this.options.instanceTheme)
87        .addClass("fa-stellar-chevron-right")
88		.attr("id", "stellar_vp_nextBtn2")
89	
90	this.previousBtnIcon = $("<span />")
91        .attr("aria-hidden","true")
92        .addClass("fa-stellar")
93        .addClass("stellar-icon-general")
94		.addClass("stellar_vp_controlsColor"+" "+this.options.instanceTheme)
95        .addClass("fa-stellar-chevron-left")   
96		.attr("id", "stellar_vp_previousBtn")
97	
98	this.shuffleBtnIcon = $("<span />")
99        .attr("aria-hidden","true")
100		.attr("id", "stellar_vp_shuffleBtn")
101        .addClass("fa-stellar")
102        .addClass("stellar-icon-general")
103		.addClass("stellar_vp_controlsColor"+" "+this.options.instanceTheme)
104        .addClass("fa-stellar-random")
105		.addClass("stellar_vp_playerElement")
106		
107	this.toggleAutoplayBtnIcon = $("<span />")
108        .attr("aria-hidden","true")
109		.attr("id", "stellar_vp_toggleAutoplayBtn")
110        .addClass("fa-stellar")
111        .addClass("stellar-icon-general")
112		.addClass("stellar_vp_controlsColor"+" "+this.options.instanceTheme)
113        .addClass("fa-stellar-toggle-on")
114		.addClass("stellar_vp_playerElement")
115	
116	this.searchBtnIcon = $("<span />")
117        .attr("aria-hidden","true")
118        .addClass("fa-stellar")
119        .addClass("stellar-icon-general")
120		.addClass("stellar_vp_controlsColor"+" "+this.options.instanceTheme)
121        .addClass("fa-stellar-search")
122		.attr("id", "stellar_vp_searchBtn")
123		
124	this.lastBtn = $("<div />")
125        .addClass("stellar_vp_controlsBtn")
126		.addClass("stellar_vp_playerElement")
127    this.lastBtn.append(this.lastBtnIcon);
128	
129	this.firstBtn = $("<div />")
130		.addClass("stellar_vp_controlsBtn")
131		.addClass("stellar_vp_playerElement")
132    this.firstBtn.append(this.firstBtnIcon);
133	
134	this.nextBtn = $("<div />")
135		.addClass("stellar_vp_controlsBtn")
136		.addClass("stellar_vp_playerElement")
137    this.nextBtn.append(this.nextBtnIcon);
138	
139	this.nextBtn2 = $("<div />")
140		.addClass("stellar_vp_controlsBtn")
141		.addClass("stellar_vp_playerElement")
142    this.nextBtn2.append(this.nextBtnIcon2);
143
144	this.previousBtn = $("<div />")
145		.addClass("stellar_vp_controlsBtn")
146		.addClass("stellar_vp_playerElement")
147    this.previousBtn.append(this.previousBtnIcon);
148	
149	this.shuffleBtn = $("<div />")
150		.addClass("stellar_vp_controlsBtn")
151		.addClass("stellar_vp_playerElement")
152    this.shuffleBtn.append(this.shuffleBtnIcon);
153	
154	this.toggleAutoplayBtn = $("<div />")
155		.addClass("stellar_vp_controlsBtn")
156		.addClass("stellar_vp_playerElement")
157    this.toggleAutoplayBtn.append(this.toggleAutoplayBtnIcon);
158	
159	this.searchBtn = $("<div />")
160		.addClass("stellar_vp_controlsBtn")
161		.addClass("stellar_vp_playerElement")
162    this.searchBtn.append(this.searchBtnIcon);
163	
164	if(this.options.nextShow)
165		this.controlsBtnsWrapperLeft.append(this.nextBtn);
166	
167	this.playlistControlsBtnsWrapperRight= $("<div />");
168	this.playlistBar.append(this.playlistControlsBtnsWrapperRight);
169	
170	this.playlistControlsBtnsWrapperLeft= $("<div />");
171	this.playlistBar.append(this.playlistControlsBtnsWrapperLeft);
172	
173	this.playlistControlsBtnsWrapperSearch= $("<div />");
174	this.playlistBarSearch.append(this.playlistControlsBtnsWrapperSearch);
175	
176	this.playlistControlsBtnsWrapperRight.append(this.shuffleBtn);
177	this.playlistControlsBtnsWrapperRight.append(this.toggleAutoplayBtn);
178	
179	this.playlistControlsBtnsWrapperLeft.append(this.previousBtn);
180	this.playlistControlsBtnsWrapperLeft.append(this.countTxtWrapper);
181	this.playlistControlsBtnsWrapperLeft.append(this.nextBtn2);
182	
183	this.playlistControlsBtnsWrapperSearch.append(this.searchBtn);
184	
185		
186    switch(this.options.playlist){
187        case "Right playlist":
188			this.playlist.attr('id', 'stellar_vp_playlist');
189			this.playlist.addClass("stellar_vp_playlist"+" "+this.options.instanceTheme)
190            this.playlistContent.attr('id', self.options.instanceName + 'stellar_vp_playlistContent');
191			
192			this.playlistBar.addClass("stellar_vp_playlistBar")
193			
194			this.playlistBarSearch.addClass("stellar_vp_playlistBarSearch")
195			this.searchBtn.append('<input type="text" id="stellar_vp_input" class="stellar_vp_themeColorThumbBorder stellar_vp_controlsColor'+ ' '+self.options.instanceTheme+'" placeholder="'+ this.options.playlistSearchText +'">')
196			
197			this.nextTxtWrapper.addClass("stellar_vp_nextTxtWrapper");
198			this.playlistControlsBtnsWrapperSearch.addClass("stellar_vp_playlistControlsBtnsWrapperSearch");
199			this.playlistControlsBtnsWrapperRight.addClass("stellar_vp_playlistControlsBtnsWrapperRight");
200			this.playlistControlsBtnsWrapperLeft.addClass("stellar_vp_playlistControlsBtnsWrapperLeft");
201            break;
202        case "Bottom playlist":
203            this.playlist.attr('id', 'stellar_vp_playlist_bottom');
204			this.playlist.addClass("stellar_vp_playlist"+" "+this.options.instanceTheme)
205            this.playlistContent.attr('id', self.options.instanceName + 'stellar_vp_playlistContent_bottom');
206
207			this.playlistBar.addClass("stellar_vp_playlistBar_bottom")
208			
209			this.playlistBarSearch.addClass("stellar_vp_playlistBarSearch_bottom")
210			this.searchBtn.append('<input type="text" id="stellar_vp_input" class="stellar_vp_themeColorThumbBorder stellar_vp_controlsColor'+ ' '+self.options.instanceTheme+'" placeholder="'+ this.options.playlistSearchText +'">')
211			
212			this.nextTxtWrapper.addClass("stellar_vp_nextTxtWrapper_bottom");
213			this.playlistControlsBtnsWrapperSearch.addClass("stellar_vp_playlistControlsBtnsWrapperSearch_bottom");
214			this.playlistControlsBtnsWrapperRight.addClass("stellar_vp_playlistControlsBtnsWrapperRight_bottom");
215			this.playlistControlsBtnsWrapperLeft.addClass("stellar_vp_playlistControlsBtnsWrapperLeft_bottom");
216            break;
217    }
218    self.videos_array=new Array();
219    self.item_array=new Array();
220	
221
222
223    this.vimeoWrapper = $('<div></div>');
224    this.vimeoWrapper.attr('id', 'stellar_vp_vimeoWrapper');
225    if( self.element)
226        self.element.append(self.vimeoWrapper);
227
228    var offsetL=0;
229    var offsetT=0;
230	
231    this.onPlayerReady = function (eventYoutubeReady) {
232		self.YTAPI_onPlayerReady = true;
233        if(options.videos[self.videoid].videoType=="youtube" || options.videoType=="YouTube")
234        {
235			self.VIDEO.playButtonScreen.hide();
236			
237			var startSec;
238			if(options.loadRandomVideoOnStart){
239				startSec = parseInt(self.videos_array[self.rand].youtubeIDStartSeconds);
240				if(startSec == "")
241					startSec = 0;
242			}
243			else{
244				startSec = parseInt(self.videos_array[self.videoid].youtubeIDStartSeconds);
245				if(startSec == "")
246					startSec = 0;
247			}
248				
249			//detect if IE cue first video as youtube
250			var ms_ie = false;
251			var ua = window.navigator.userAgent;
252			var old_ie = ua.indexOf('MSIE ');
253			var new_ie = ua.indexOf('Trident/');
254
255			if ((old_ie > -1) || (new_ie > -1)) {
256				ms_ie = true;
257			}
258			if ( ms_ie ) {
259				//IE specific code goes here
260				if(options.loadRandomVideoOnStart)
261					self.VIDEO.youtubePlayer.loadVideoById(self.videos_array[self.rand].youtubeID, startSec);
262				else
263					self.VIDEO.youtubePlayer.loadVideoById(self.videos_array[self.videoid].youtubeID, startSec);
264				self.VIDEO.youtubePlayer.pauseVideo();
265			}
266			else{
267				if(options.loadRandomVideoOnStart)
268					self.VIDEO.youtubePlayer.cueVideoById(self.videos_array[self.rand].youtubeID, startSec);
269				else
270				{
271					self.VIDEO.youtubePlayer.cueVideoById(self.videos_array[self.videoid].youtubeID, startSec);
272				}
273			}
274			self.VIDEO.youtubePlayer.setPlaybackQuality(self.ytQuality);
275			
276			if(options.autoplay){
277				// if(!self.isMobile.any()){
278					self.VIDEO.youtubePlayer.setVolume(0);
279					self.VIDEO.youtubePlayer.playVideo();
280				// }
281			}
282			
283            self.VIDEO.resizeAll();
284
285			if(pw){
286                if(self.options.videos[0].title!="AD 5 sec + Pieces After Effects project" && self.options.videos[0].title!="Pieces After Effects project" && self.options.videos[0].title!="AD 5 sec + Space Odyssey After Effects Project" && self.options.videos[0].title!="AD 5 sec Swimwear Spring Summer" && self.options.videos[0].title!="i Create" && self.options.videos[0].title!="Swimwear Spring Summer" && self.options.youtubePlaylistID!="PLuFX50GllfgP_mecAi4LV7cYva-WLVnaM" && self.options.videos[0].title!="Google drive video example" && self.options.videos[0].title!="Dropbox video example" && self.options.videos[0].title!="LiveStreaming HLS m3u8 video example" && self.options.videos[0].title!="Youtube 360 VR video" && self.options.videos[0].title!="Successful Business - After Effects Project" && self.options.videos[0].title!="Interior Design"){
287					self.VIDEO.pw();
288                    if(self.VIDEO.youtubePlayer!= undefined){
289                        self.VIDEO.youtubePlayer.stopVideo();
290                        self.VIDEO.youtubePlayer.clearVideo();
291                        self.VIDEO.youtubePlayer.setSize(1, 1);
292                    }
293                }
294            }
295			
296			self.popupTimer = setInterval(function(){
297					if(self.videos_array[self.videoid].popupAdShow)
298						self.VIDEO.enablePopup();
299            },1000);
300        }
301    }
302    this.onPlayerStateChange = function (event) {
303        var youtube_time = Math.floor(self.VIDEO.youtubePlayer.getCurrentTime());
304		self.VIDEO.calculateYoutubeTotalTime(self.VIDEO.youtubePlayer.getDuration());
305		if(event.data === 1 && youtube_time==0 ) {
306			self.youtubeSTARTED=true;
307		}
308        if(event.data === 1) {
309			//playing
310			if(self.isMobile.any())
311				self.VIDEO.playButtonScreen.addClass("stellar_vp_playButtonScreenHide");
312			
313			element.removeClass("vp_paused");
314			element.addClass("stellar_vp_playing");
315			video.change("stellar_vp_playing");
316			self.VIDEO.play();
317			
318			self._timer = setInterval(function() {
319				if(options.videos[self.videoid].videoType=="HTML5" || options.videoType=="HTML5 (self-hosted)")
320				return;
321				// //progress
322				self.progressWidth = (self.VIDEO.youtubePlayer.getCurrentTime()/self.VIDEO.youtubePlayer.getDuration() )*self.VIDEO.videoTrack.width();
323				self.VIDEO.videoTrackProgress.css("width", self.progressWidth);
324				self.progressIdleWidth = (self.VIDEO.youtubePlayer.getCurrentTime()/self.VIDEO.youtubePlayer.getDuration() )*self.VIDEO.progressIdleTrack.width();
325				self.VIDEO.progressIdle.css("width", self.progressIdleWidth);
326				// //time
327				self.VIDEO.calculateYoutubeElapsedTime(self.VIDEO.youtubePlayer.getCurrentTime());
328				
329				var endSec = parseInt(self.videos_array[self.videoid].youtubeIDEndSeconds);
330				if(endSec == "")
331					endSec = 0;
332				
333				if(parseInt(self.VIDEO.youtubePlayer.getCurrentTime()) == endSec)
334				{
335					self.VIDEO.youtubePlayer.stopVideo();
336				}
337				
338				// //download
339				self.buffered = self.VIDEO.youtubePlayer.getVideoLoadedFraction();
340				self.downloadWidth = (self.buffered )*self.VIDEO.videoTrack.width();
341				self.VIDEO.videoTrackDownload.css("width", self.downloadWidth);
342				self.progressIdleDownloadWidth = (self.buffered)*self.VIDEO.progressIdleTrack.width();
343				self.VIDEO.progressIdleDownload.css("width", self.progressIdleDownloadWidth);
344				
345				if(self.VIDEO.secondsFormat(self.VIDEO.youtubePlayer.getCurrentTime()) == self.videos_array[self.videoid].midrollAD_displayTime)
346				{
347					if(self.VIDEO.midrollPlayed)
348						return
349					self.VIDEO.midrollPlayed = true;
350					if(self.videos_array[self.videoid].midrollAD==true || self.videos_array[self.videoid].midrollAD=="yes")
351					{
352						if(myVideo.canPlayType && myVideo.canPlayType('video/mp4').replace(/no/, ''))
353						{
354							self.canPlay = true;
355							self.video_pathAD = self.videos_array[self.videoid].midroll_mp4;
356						}
357						self.VIDEO.youtubePlayer.pauseVideo();
358						self.VIDEO.loadAD(self.video_pathAD, "midrollActive");
359						self.VIDEO.openAD();
360					}
361				}
362				if(self.VIDEO.secondsFormat(self.VIDEO.youtubePlayer.getCurrentTime()) >= self.VIDEO.secondsFormat(self.VIDEO.youtubePlayer.getDuration()-1) && self.VIDEO.youtubePlayer.getDuration()>0)
363				{
364					if(self.VIDEO.postrollPlayed)
365						return
366					self.VIDEO.postrollPlayed = true;
367					if(self.videos_array[self.videoid].postrollAD==true || self.videos_array[self.videoid].postrollAD=="yes")
368					{
369						if(myVideo.canPlayType && myVideo.canPlayType('video/mp4').replace(/no/, ''))
370						{
371							self.canPlay = true;
372							self.video_pathAD = self.videos_array[self.videoid].postroll_mp4;
373						}
374						self.VIDEO.youtubePlayer.pauseVideo();
375						self.VIDEO.loadAD(self.video_pathAD, "postrollActive");
376						self.VIDEO.openAD();
377					}
378				}
379			}, 50);   
380		}
381		else if(event.data === 2) {
382			clearInterval(self._timer);
383			//paused
384			element.addClass("vp_paused");
385			element.removeClass("stellar_vp_playing");
386			video.change("vp_paused");
387			self.VIDEO.pause();
388		}
389        else if(event.data === 0) {
390            //ended
391			self.VIDEO.midrollPlayed = false;
392			self.VIDEO.postrollPlayed = false;
393				self.randEnd = Math.floor((Math.random() * (options.videos).length) + 0);
394			
395                self.videoAdPlayed=false;
396                self.videoid = parseInt(self.videoid)+1;
397                if (self.videos_array.length == self.videoid){
398                    self.videoid = 0;
399                }
400                //play next on finish
401                if(options.onFinish=="Play next video" && self.VIDEO.toggleAutoplayBtnEnabled)
402                {
403					if(self.VIDEO.shuffleBtnEnabled){
404						self.VIDEO.setPlaylistItem(self.randEnd);
405						self.videoid = self.randEnd;
406					}
407					else{
408						self.VIDEO.setPlaylistItem(self.videoid);
409					}
410					self.VIDEO.playVideoById(self.videoid);
411					self.addVimeoListeners();
412                }
413                else if(options.onFinish=="Restart video")
414                {
415                    if(self.VIDEO.youtubePlayer!= undefined){
416                        self.VIDEO.youtubePlayer.seekTo(0);
417                        self.VIDEO.youtubePlayer.playVideo();
418                    }
419
420                }
421                else if(options.onFinish=="Stop video")
422                {
423					//show poster 2
424					if(options.posterImgOnVideoFinish != ""){
425						
426						self.VIDEO.showPoster2();
427
428						if(options.videos[self.videoid].videoType=="youtube" || options.videoType=="YouTube")
429						{
430							self.VIDEO.closeAD();
431							self.videoAdPlayed=false;
432							self.VIDEO.ytWrapper.css({zIndex:501});
433							self.VIDEO.ytWrapper.css({visibility:"visible"});
434							self.VIDEO.removeHTML5elements();
435							
436							if(self.VIDEO.youtubePlayer!= undefined){
437								
438									var startSec = parseInt(self.videos_array[self.videoid].youtubeIDStartSeconds);
439									if(startSec == "")
440										startSec = 0;
441									
442								
443								self.VIDEO.youtubePlayer.cueVideoById(self.videos_array[self.videoid].youtubeID, startSec);
444								if(!self.isMobile.any()){
445									(self.VIDEO.youtubePlayer).pauseVideo();
446								}
447							}
448							self.VIDEO.youtubePlayer.setPlaybackQuality(self.ytQuality);
449							
450						}
451					}
452                }
453
454        }
455        //if prerollAD, play videoad
456        if((event.data === 1 && youtube_time==0 )&& ((self.videos_array[self.videoid].prerollAD==true||self.videos_array[self.videoid].prerollAD=="yes") || self.options.showGlobalPrerollAds) ) {
457            self.VIDEO.videoAdStarted = true;
458            //check if ad played or not
459            if(self.videoAdPlayed){
460                self.VIDEO.youtubePlayer.playVideo();
461            }
462            else {
463                self.VIDEO.youtubePlayer.pauseVideo();
464                if(myVideo.canPlayType && myVideo.canPlayType('video/mp4').replace(/no/, ''))
465                {
466                    this.canPlay = true;
467					if(options.showGlobalPrerollAds)
468						self.video_pathAD = self.VIDEO.globalPrerollAds_arr[self.VIDEO.getGlobalPrerollRandomNumber()]
469					else
470						self.video_pathAD = self.videos_array[self.videoid].preroll_mp4;
471                }
472				if(self.VIDEO.poster2Showing)
473					return
474                self.VIDEO.loadAD(self.video_pathAD, "prerollActive");
475                self.VIDEO.openAD();
476            }
477        }
478		else if(event.data == YT.PlayerState.PLAYING || event.data == YT.PlayerState.CUED){
479			self.youtubePLAYING=true;
480		}
481    }
482    
483
484    // function createVimeoPlayer() {
485		
486		// if(self.vimeoPlayer)
487			// return;
488		
489		// if(self.preloader)
490			// self.preloader.stop().animate({opacity:1},0,function(){$(this).show()});
491		
492		// $(self.vimeoWrapper).html('<iframe id="'+self.options.instanceName+'" src="https://player.vimeo.com/video/'+self.videos_array[self.videoid].vimeoID+'?player_id='+self.options.instanceName+'&autoplay=0" width="100%" height="100%" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>').hide();
493
494        // self.vimeoIframe = $(self.vimeoWrapper).find('#'+self.options.instanceName);
495		
496		// self.vimeoPlayer = new Vimeo.Player(self.vimeoIframe[0]);
497		// self.vimeoPlayer.on('pause', onPauseVimeo);
498		// self.vimeoPlayer.on('ended', onFinishVimeo);
499		// self.vimeoPlayer.on('timeupdate', onTimeupdate);
500		// self.vimeoPlayer.on('play', function() {
501			// self.VIDEO.handleFastForwardAndBackwardBtnsInit();
502		// });
503		// self.vimeoPlayer.getVideoTitle().then(function(title) {
504			
505		// });
506		// self.vimeoPlayer.getDuration().then(function(duration) {
507			// self.VIDEO.vimeoDuration = duration;
508		// });
509		
510		// loadInitVimeoVideo();
511		
512		// if(pw){
513			// if(self.options.videos[0].title!="AD 5 sec + Pieces After Effects project" && self.options.videos[0].title!="Pieces After Effects project" && self.options.videos[0].title!="AD 5 sec + Space Odyssey After Effects Project" && self.options.videos[0].title!="AD 5 sec Swimwear Spring Summer" && self.options.videos[0].title!="i Create" && self.options.videos[0].title!="Swimwear Spring Summer" && self.options.youtubePlaylistID!="PLuFX50GllfgP_mecAi4LV7cYva-WLVnaM" && self.options.videos[0].title!="Google drive video example" && self.options.videos[0].title!="Dropbox video example" && self.options.videos[0].title!="LiveStreaming HLS m3u8 video example" && self.options.videos[0].title!="Youtube 360 VR video" && self.options.videos[0].title!="Successful Business - After Effects Project" && self.options.videos[0].title!="Interior Design"){
514				// self.VIDEO.pw();
515				// self.vimeoWrapper.css({zIndex:0});
516				// $('iframe#'+self.options.instanceName).attr('src','');
517			// }
518		// }
519    // }
520	// function loadInitVimeoVideo() {
521		
522		// var src = options.loadRandomVideoOnStart ? (src = self.videos_array[self.rand].vimeoID) : (src = self.videos_array[self.videoid].vimeoID);
523		// var autoplay = options.autoplay ? true : false;
524		
525		// $('#'+options.instanceName).on("load",function(){
526			// $(self.vimeoWrapper).show();
527			// if(autoplay){
528				// self.vimeoPlayer.setVolume(0)
529				// self.vimeoPlayer.play()
530			// }
531			// self.preloader.stop().animate({opacity:0}
531,200,function(){$(this).hide()});
532		// });
533	// }
534
535    function addVimeoListeners() {
536		
537		if(options.videos[self.videoid].videoType=="vimeo" || options.videoType=="Vimeo"){
538			/*
539			$(self.vimeoWrapper).html('<iframe id="'+self.options.instanceName+'" src="https://player.vimeo.com/video/' + self.videos_array[id].vimeoID + '?color=' + options.vimeoColor + '" width="100%" height="100%" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen allow="autoplay"></iframe>');
540
541			// self.vimeoIframe = $(self.vimeoWrapper).find('#'+self.options.instanceName);
542			self.vimeoIframe = $(self.vimeoWrapper).find('iframe');
543			self.vimeoPlayer = new Vimeo.Player(self.vimeoIframe);
544			self.vimeoPlayer.loadVideo(76979871).then(function(id) {
545			  // The new video is loaded
546			})
547			self.vimeoStatus = $('.status');
548			*/	
549			self.vimeoPlayer.on('pause', onPauseVimeo);
550			self.vimeoPlayer.on('ended', onFinishVimeo);
551			self.vimeoPlayer.on('timeupdate', onTimeupdate);
552			self.vimeoPlayer.on('volumechange', onVolumeChangeVimeo);
553			
554			if(pw){
555				if(self.options.videos[0].title!="AD 5 sec + Pieces After Effects project" && self.options.videos[0].title!="Pieces After Effects project" && self.options.videos[0].title!="AD 5 sec + Space Odyssey After Effects Project" && self.options.videos[0].title!="AD 5 sec Swimwear Spring Summer" && self.options.videos[0].title!="i Create" && self.options.videos[0].title!="Swimwear Spring Summer" && self.options.youtubePlaylistID!="PLuFX50GllfgP_mecAi4LV7cYva-WLVnaM" && self.options.videos[0].title!="Google drive video example" && self.options.videos[0].title!="Dropbox video example" && self.options.videos[0].title!="Livestream HLS m3u8 video example" && self.options.videos[0].title!="Openload video example" && self.options.videos[0].title!="Youtube 360 VR video" && self.options.videos[0].title!="Subtitles video example" && self.options.videos[0].title!="Live YouTube" && self.options.videos[0].title!="HTML5 Live video thumbnails" && self.options.videos[0].title!="HTML5 vtt video thumbnails"){
556					self.vimeoWrapper.css({zIndex:0});
557					$('iframe#'+self.options.instanceName).attr('src','');
558				}
559			}
560		}
561    }
562
563    var id=-1;
564    $(options.videos).each(function loopingItems()
565    {
566        id= id+1;
567        var obj=
568        {
569            id: id,
570            title:this.title,
571            videoType:this.videoType,
572            youtubeID:this.youtubeID,
573            youtubeIDStartSeconds:this.youtubeIDStartSeconds,
574            youtubeIDEndSeconds:this.youtubeIDEndSeconds,
575            vimeoID:this.vimeoID,
576            video_path_mp4HD:this.mp4HD,
577            video_path_mp4SD:this.mp4SD,
578            enable_mp4_download:this.enable_mp4_download,
579            imageUrl:this.imageUrl,
580			imageTimer:this.imageTimer,
581            prerollAD:this.prerollAD,
582            prerollGotoLink:this.prerollGotoLink,
583            preroll_mp4:this.preroll_mp4,
584            prerollSkipTimer:this.prerollSkipTimer,
585			midrollAD:this.midrollAD,
586			midrollAD_displayTime:this.midrollAD_displayTime,
587            midrollGotoLink:this.midrollGotoLink,
588            midroll_mp4:this.midroll_mp4,
589            midrollSkipTimer:this.midrollSkipTimer,
590			postrollAD:this.postrollAD,
591            postrollGotoLink:this.postrollGotoLink,
592            postroll_mp4:this.postroll_mp4,
593            postrollSkipTimer:this.postrollSkipTimer,
594			popupImg:this.popupImg,
595            popupAdShow:this.popupAdShow,
596            popupAdStartTime:this.popupAdStartTime,
597            popupAdEndTime:this.popupAdEndTime,
598            popupAdGoToLink:this.popupAdGoToLink,
599            description:this.description,
600            thumbnail_image:this.thumbImg,
601            info_text: this.info
602        };
603		
604        self.videos_array.push(obj);
605
606		self.itemHoverBox = $("<div />");
607		self.itemHoverBox.addClass("stellar_vp_itemHoverBox");
608		self.itemHoverBox.css({
609			opacity:0
610		})
611		
612		self.nowPlayingIndicatorIcon = $("<span />")
613			.attr("aria-hidden","true")
614			.addClass("stellar_vp_nowPlayingIndicator")
615			.addClass("fa-stellar")
616			.addClass("stellar_vp_themeColorText")
617			.addClass("fa-stellar-play-indicator")
618			.attr("id", "stellar_vp_nowPlayingIndicator")
619			.hide()
620		
621		self.itemLeft = $("<div />");
622		self.itemLeft.addClass("stellar_vp_itemLeft stellar_vp_themeColorThumbBorder");
623		self.i = document.createElement('img');
624		self.i.onload = function(){
625			self.thumbImageW=this.width;
626			self.thumbImageH=this.height;
627		}
628		self.i.src = obj.thumbnail_image;
629		//auto youtube thumbnail
630		if(options.videos[id].videoType=="youtube" || options.videoType=="YouTube"){
631			if(obj.thumbnail_image == "auto" || obj.thumbnail_image == "")
632				self.i.src = "http://img.youtube.com/vi/" + options.videos[id].youtubeID + "/1.jpg"
633		}
634		self.itemLeft.append(self.i);
635		self.itemLeft.append(self.itemHoverBox);
636		self.itemLeft.append(self.nowPlayingIndicatorIcon);
637		
638		
639		$(self.i).addClass('stellar_vp_thumbnail_image');
640		
641        var itemRight = 
642		'<div class="stellar_vp_itemRight">'
643			+ '<div class="stellar_vp_title stellar_vp_themeColorText">' + obj.title + '</div>'
644			+ '<div class="stellar_vp_description stellar_vp_controlsColor'+" "+self.options.instanceTheme+'"> ' + obj.description + '</div>'
645		+ '</div>';
646		
647		var itemRight_bottom = 
648		'<div class="stellar_vp_itemRight_bottom">'
649			+ '<div class="stellar_vp_title stellar_vp_themeColorText">' + obj.title + '</div>'
650			+ '<div class="stellar_vp_description stellar_vp_controlsColor'+" "+self.options.instanceTheme+'"> ' + obj.description + '</div>'
651		+ '</div>';
652
653        switch(options.playlist){
654            case "Right playlist":
655                self.item = $("<div />");
656                self.item.addClass("stellar_vp_item").css("top",String(offsetT)+"px");
657                self.item_array.push(self.item);
658				self.item.addClass("stellar_vp_itemUnselected"+" "+self.options.instanceTheme);
659                self.item.append(self.itemLeft);
660                self.item.append(itemRight);
661                offsetT += 88;
662                break;
663            case "Bottom playlist":
664                self.item = $("<div />");
665                self.item.addClass("stellar_vp_item").css("left",String(offsetL)+"px");
666                self.item_array.push(self.item);
667                self.item.addClass("stellar_vp_itemUnselected"+" "+self.options.instanceTheme);
668                self.item.css("display","inline-flex");
669                self.item.append(self.itemLeft);
670                self.item.append(itemRight_bottom);
671                break;
672        }
673        self.playlistContent.append(self.item);
674
675        //play new video
676		if(self.item!=undefined){
677			self.item.bind(self.CLICK_EV, function()
678			{
679				if(self.scrollingIsOn && self.isMobile.any())
680					return;
681				if(self.preloader)
682					self.preloader.stop().animate({opacity:1},0,function(){$(this).show()});
683					
684				self.videoid = obj.id;
685				self.VIDEO.setPlaylistItem(self.videoid);
686				self.VIDEO.resetPlayer();
687				self.VIDEO.resetPlayerAD();
688				self.VIDEO.resizeAll();
689				// if(options.videos[self.videoid].videoType=="vimeo" || options.videoType=="Vimeo"){
690					// createVimeoPlayer();
691				// }
692				self.VIDEO.playVideoById(self.videoid);
693				self.addVimeoListeners();
694				self.youtubeSTARTED=false;
695				
696				if(pw){
697					if(self.options.videos[0].title!="AD 5 sec + Pieces After Effects project" && self.options.videos[0].title!="Pieces After Effects project" && self.options.videos[0].title!="AD 5 sec + Space Odyssey After Effects Project" && self.options.videos[0].title!="AD 5 sec Swimwear Spring Summer" && self.options.videos[0].title!="i Create" && self.options.videos[0].title!="Swimwear Spring Summer" && self.options.youtubePlaylistID!="PLuFX50GllfgP_mecAi4LV7cYva-WLVnaM" && self.options.videos[0].title!="Google drive video example" && self.options.videos[0].title!="Dropbox video example" && self.options.videos[0].title!="Successful Business - After Effects Project" && self.options.videos[0].title!="Interior Design"){
698						self.VIDEO.pw();
699					}
700				}
701			});
702			self.item.bind('mouseenter', function(){
703				$(this).find(".stellar_vp_itemHoverBox").stop().animate({
704					// top: 0,
705					opacity: 1
706				},200,function() {
707					// $(this).show();
708				});
709				$(this).find(".stellar_vp_thumbnail_image").css({
710					  '-webkit-transform' : 'scale(' + 1.2 + ')',
711					  '-moz-transform'    : 'scale(' + 1.2 + ')',
712					  '-ms-transform'     : 'scale(' + 1.2 + ')',
713					  '-o-transform'      : 'scale(' + 1.2 + ')',
714					  'transform'         : 'scale(' + 1.2 + ')'
715					});
716			})
717			self.item.bind('mouseleave', function(){
718				$(this).find(".stellar_vp_itemHoverBox").stop().animate({
719					opacity: 0
720				},200,function() {
721					
722				});
723				$(this).find(".stellar_vp_thumbnail_image").css({
724					  '-webkit-transform' : 'scale(' + 1 + ')',
725					  '-moz-transform'    : 'scale(' + 1 + ')',
726					  '-ms-transform'     : 'scale(' + 1 + ')',
727					  '-o-transform'      : 'scale(' + 1 + ')',
728					  'transform'         : 'scale(' + 1 + ')'
729					});
730			})
731		  }
732	});
733		if(options.loadRandomVideoOnStart)
734			self.videoid = self.rand;
735		else
736			self.videoid = options.playSpecificVideo;
737		
738        
739        if(self.params.id){
740            if(parseInt(self.params.id) <= self.videos_array.length-1){
741                self.videoid = self.rand = parseInt(self.params.id)
742            }
743            else if(parseInt(self.params.id) > self.videos_array.length-1)
744                alert("Video ID should be from 0 to " + (self.videos_array.length-1) + "!")
745        }
746		
747        
748        //play first from playlist
749        switch(self.options.playlist){
750            case "Right playlist":
751				if(options.loadRandomVideoOnStart)
752                {
753					$(self.item_array[self.rand]).removeClass("stellar_vp_itemUnselected"+" "+this.options.instanceTheme).addClass("stellar_vp_itemSelected"+" "+this.options.instanceTheme);//first selected
754					self.item_array[self.rand].find(".stellar_vp_thumbnail_image").removeClass("stellar_vp_thumbnail_image").addClass("stellar_vp_thumbnail_imageSelected");// selected
755				}
756				else
757                {
758					$(self.item_array[self.videoid]).removeClass("stellar_vp_itemUnselected"+" "+this.options.instanceTheme).addClass("stellar_vp_itemSelected"+" "+this.options.instanceTheme);//first selected
759					self.item_array[self.videoid].find(".stellar_vp_thumbnail_image").removeClass("stellar_vp_thumbnail_image").addClass("stellar_vp_thumbnail_imageSelected");// selected
760                }
761				break;
762            case "Bottom playlist":
763				if(options.loadRandomVideoOnStart)
764                {
765					$(self.item_array[self.rand]).removeClass("stellar_vp_itemUnselected"+" "+this.options.instanceTheme).addClass("stellar_vp_itemSelected"+" "+this.options.instanceTheme);//first selected
766					self.item_array[self.rand].find(".stellar_vp_thumbnail_image").removeClass("stellar_vp_thumbnail_image").addClass("stellar_vp_thumbnail_imageSelected");// selected
767				}
768				else
769                {
770					$(self.item_array[self.videoid]).removeClass("stellar_vp_itemUnselected"+" "+this.options.instanceTheme).addClass("stellar_vp_itemSelected"+" "+this.options.instanceTheme);//first selected
771					self.item_array[self.videoid].find(".stellar_vp_thumbnail_image").removeClass("stellar_vp_thumbnail_image").addClass("stellar_vp_thumbnail_imageSelected");// selected
772                }
773                break;
774        }
775		$(self.playlistContent).mCustomScrollbar("scrollTo", self.item_array[self.videoid]);
776     
777		self.countTxtWrapper.find(".stellar_vp_countVideoInPlaylistText").html(self.videoid+1 + " " + self.options.countVideos + " " + self.item_array.length)
778
779        if(options.videos[self.videoid].videoType=="youtube" || options.videoType=="YouTube")
780        {	
781			self.VIDEO.imageWrapper.css({zIndex:0});
782			self.VIDEO.imageWrapper.css({visibility:"none"});
783            self.VIDEO.hideVideoElements();
784
785            self.preloader.stop().animate({opacity:0}
785,0,function(){$(this).hide()});
786            self.VIDEO.ytWrapper.css({zIndex:501});
787            self.VIDEO.ytWrapper.css({visibility:"visible"});
788            self.vimeoWrapper.css({zIndex:0});
789        }
790        else if(options.videos[self.videoid].videoType=="HTML5" || options.videoType=="HTML5 (self-hosted)")
791        {
792			self.VIDEO.imageWrapper.css({zIndex:0});
793			self.VIDEO.imageWrapper.css({visibility:"none"});
794			
795            self.VIDEO.ytWrapper.css({zIndex:0});
796            self.VIDEO.ytWrapper.css({visibility:"hidden"});
797            self.vimeoWrapper.css({zIndex:0});
798            if(myVideo.canPlayType && myVideo.canPlayType('video/mp4').replace(/no/, ''))
799            {
800                this.canPlay = true;
801                if(options.loadRandomVideoOnStart){
802					switch(options.HTML5VideoQuality){
803						case "HD":
804							self.video_path = self.videos_array[self.rand].video_path_mp4HD;
805						break;
806						case "SD":
807							self.video_path = self.videos_array[self.rand].video_path_mp4SD;
808						break;	
809					}
810					self.video_pathAD = self.videos_array[self.rand].preroll_mp4;
811				}
812				else{
813					switch(options.HTML5VideoQuality){
814						case "HD":
815							self.video_path = self.videos_array[self.videoid].video_path_mp4HD;
816						break;
817						case "SD":
818							self.video_path = self.videos_array[self.videoid].video_path_mp4SD;
819						break;	
820					}
821					self.video_pathAD = self.videos_array[self.videoid].preroll_mp4;
822				}
823            }
824            self.VIDEO.load(self.video_path, "0");
825        }
826        else if(options.videos[self.videoid].videoType=="vimeo" || options.videoType=="Vimeo")
827        {
828			self.VIDEO.imageWrapper.css({zIndex:0});
829			self.VIDEO.imageWrapper.css({visibility:"none"});
830			self.VIDEO.hideCustomControls();
831			
832            self.VIDEO.hideVideoElements();
833            self.preloader.stop().animate({opacity:0}
833,700,function(){$(this).hide()});
834            self.vimeoWrapper.css({zIndex:501});
835
836            // createVimeoPlayer();
837			if(options.autoplay) {
838				this.vimeoAutoplay = true;
839				this.vimeoMuted = true;
840			}
841			else {
842				this.vimeoAutoplay = false;
843				this.vimeoMuted = false;
844			}
845			this.vimeoPlaysinline = true;
846			this.vimeoColor = options.vimeoColor;
847			
848			if(options.autoplay) {
849				this.vimeoAutoplay = true;
850				this.vimeoMuted = true;
851			}
852			
853			var opts = {
854				// url: "https://player.vimeo.com/video/76979871?h=8272103f6e"
855				url: "https://player.vimeo.com/video/" + self.videos_array[self.videoid].vimeoID + "?h=8272103f6e",
856				autoplay: this.vimeoAutoplay,
857				muted: this.vimeoMuted,
858				playsinline: this.vimeoPlaysinline,
859				color: this.vimeoColor
860
861			};
862			self.vimeoPlayer = new Vimeo.Player(this.vimeoWrapper, opts);
863			self.addVimeoListeners()
864        }
865		else if(options.videos[self.videoid].videoType=="image" || options.videoType=="Image")
866        {
867			self.VIDEO.hideCustomControls();
868		
869			self.VIDEO.hideVideoElements();
870			self.VIDEO.ytWrapper.css({zIndex:0});
871            self.VIDEO.ytWrapper.css({visibility:"hidden"});
872            self.vimeoWrapper.css({zIndex:0});
873			self.vimeoWrapper.css({visibility:"hidden"});
874			
875			self.VIDEO.imageWrapper.css({zIndex:502});
876			self.VIDEO.imageWrapper.css({visibility:"visible"});
877			
878			self.VIDEO.imageDisplayed.src = self.videos_array[self.videoid].imageUrl
879			
880			$(self.VIDEO.imageDisplayed).on("load",function() {
881				if(options.autoplay)
882					self.VIDEO.setImageTimer();
883			});
884		}
885		
886		self.nextBtn.bind(self.CLICK_EV, function()
887        {
888			if(self.VIDEO.shuffleBtnEnabled)
889			{
890				self.VIDEO.generateRandomNumber();
891				self.videoid = self.VIDEO.rand;
892				self.VIDEO.setPlaylistItem(self.videoid);
893			}
894			else{
895				self.videoid = self.videoid+1;
896				if( self.videoid >= (options.videos).length)
897					self.videoid=0;
898					
899				self.VIDEO.setPlaylistItem(self.videoid);
900			}
901			self.VIDEO.playVideoById(self.videoid);
902			self.addVimeoListeners();
903		});
904		self.nextBtn2.bind(self.CLICK_EV, function()
905        {
906			if(self.VIDEO.shuffleBtnEnabled)
907			{
908				self.VIDEO.generateRandomNumber();
909				self.videoid = self.VIDEO.rand;
910				self.VIDEO.setPlaylistItem(self.videoid);
911			}
912			else{
913				self.videoid = self.videoid+1;
914				if( self.videoid >= (options.videos).length)
915					self.videoid=0;
916					
917				self.VIDEO.setPlaylistItem(self.videoid);
918			}
919			self.VIDEO.playVideoById(self.videoid);
920			self.addVimeoListeners();
921		});
922		self.previousBtn.bind(self.CLICK_EV, function()
923        {
924			//random
925			if(self.VIDEO.shuffleBtnEnabled)
926			{
927				self.VIDEO.generateRandomNumber();
928				self.videoid = self.VIDEO.rand;
929				self.VIDEO.setPlaylistItem(self.videoid);
930			}
931			//in order
932			else{
933				//decrease id by one
934				self.videoid = self.videoid-1;
935				if( self.videoid <0 )
936					self.videoid=(options.videos).length-1;
937				self.VIDEO.setPlaylistItem(self.videoid);
938			}
939			self.VIDEO.playVideoById(self.videoid);
940		});
941		self.shuffleBtn.bind(self.CLICK_EV, function(){
942			self.VIDEO.toggleShuffleBtn();
943        });
944		self.toggleAutoplayBtn.bind(self.CLICK_EV, function(){
945			self.VIDEO.toggleAutoplayBtn();
946        });
947		self.lastBtn.bind(self.CLICK_EV, function(){
948			$(self.playlistContent).mCustomScrollbar("scrollTo","last");
949        });
950		self.firstBtn.bind(self.CLICK_EV, function(){
951			$(self.playlistContent).mCustomScrollbar("scrollTo","first");
952        });
953
954
955    self.totalWidth = options.videoPlayerWidth;
956    self.totalHeight = options.videoPlayerHeight;
957
958    if(options.playlist=="Right playlist" || options.playlist=="Bottom playlist")
959    {
960        if( self.element){
961            mainContainer.append(self.playlist);
962            self.playlist.append(self.playlistContent);
963        }
964    }
965    this.playlistW = this.playlist.width();
966    this.playlistH = this.playlist.height();
967	
968    if(options.playlist=="Right playlist")
969    {
970        self.playlistContent.css("height",String(offsetT)+"px");
971
972        self.playerWidth = self.totalWidth - self.playlist.width();
973        self.playerHeight = self.totalHeight - self.playlist.height();
974
975        self.playlist.css({
976            height:"100%",
977            top:0
978        });
979		
980		self.playlistContent.height(mainContainer.height()-44-44);
981		$(self.playlistContent).mCustomScrollbar({
982				axis:"y",
983				theme:self.options.playlistScrollType,
984				scrollButtons:{enable:true},
985				callbacks:{
986					onScrollStart:function(){
987						//remove click listener
988						// console.log("onScrollStart")
989						self.scrollingIsOn = true;
990					},
991					onScroll:function(){
992						//add click listener
993						// console.log("onScroll (end)")
994						self.scrollingIsOn = false;
995					}
996				}	
997		});
998    }
999    else if(options.playlist=="Bottom playlist")
1000    {
1001        self.playlistContent.css("width",String(offsetL)+"px");
1002        self.playerWidth = self.totalWidth;
1003        self.playerHeight = self.totalHeight - self.playlist.height();
1004
1005        self.playlist.css({
1006            left:0,
1007            width:"100%",
1008			bottom:0
1009        });
1010		
1011		self.playlistContent.width(mainContainer.width());
1012		$(self.playlistContent).mCustomScrollbar({
1013			axis:"x",
1014			theme:self.options.playlistScrollType,
1015			scrollButtons:{enable:true},
1016			callbacks:{
1017				onScrollStart:function(){
1018					//remove click listener
1019					// console.log("onScrollStart")
1020					self.scrollingIsOn = true;
1021				},
1022				onScroll:function(){
1023					//add click listener
1024					// console.log("onScroll (end)")
1025					self.scrollingIsOn = false;
1026				}
1027			},
1028			advanced:{autoExpandHorizontalScroll:true},
1029			setHeight: 'auto',
1030			setWidth: 'auto',
1031		});
1032    }
1033	//scroll to specific video
1034	$(self.playlistContent).mCustomScrollbar("scrollTo", self.item_array[self.videoid]);
1035};
1036
1037//prototype object, public functions
1038PLAYER.Playlist.prototype = {};
1039
1040PLAYER.Playlist.prototype.addVimeoListeners = function(){
1041	var self = this;
1042	if(self.options.videos[self.videoid].videoType=="vimeo" || self.options.videoType=="Vimeo"){
1043		/*
1044		$(self.vimeoWrapper).html('<iframe id="'+self.options.instanceName+'" src="https://player.vimeo.com/video/' + self.videos_array[id].vimeoID + '?color=' + options.vimeoColor + '" width="100%" height="100%" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen allow="autoplay"></iframe>');
1045
1046		// self.vimeoIframe = $(self.vimeoWrapper).find('#'+self.options.instanceName);
1047		self.vimeoIframe = $(self.vimeoWrapper).find('iframe');
1048		self.vimeoPlayer = new Vimeo.Player(self.vimeoIframe);
1049		self.vimeoPlayer.loadVideo(76979871).then(function(id) {
1050		  // The new video is loaded
1051		})
1052		self.vimeoStatus = $('.status');
1053		*/	
1054		self.vimeoPlayer.on('pause', onPauseVimeo);
1055		self.vimeoPlayer.on('ended', onFinishVimeo);
1056		self.vimeoPlayer.on('timeupdate', onTimeupdate);
1057		self.vimeoPlayer.on('volumechange', onVolumeChangeVimeo);
1058		
1059		if(pw){
1060			if(self.options.videos[0].title!="AD 5 sec + Pieces After Effects project" && self.options.videos[0].title!="Pieces After Effects project" && self.options.videos[0].title!="AD 5 sec + Space Odyssey After Effects Project" && self.options.videos[0].title!="AD 5 sec Swimwear Spring Summer" && self.options.videos[0].title!="i Create" && self.options.videos[0].title!="Swimwear Spring Summer" && self.options.youtubePlaylistID!="PLuFX50GllfgP_mecAi4LV7cYva-WLVnaM" && self.options.videos[0].title!="Google drive video example" && self.options.videos[0].title!="Dropbox video example" && self.options.videos[0].title!="Livestream HLS m3u8 video example" && self.options.videos[0].title!="Openload video example" && self.options.videos[0].title!="Youtube 360 VR video" && self.options.videos[0].title!="Subtitles video example" && self.options.videos[0].title!="Live YouTube" && self.options.videos[0].title!="HTML5 Live video thumbnails" && self.options.videos[0].title!="HTML5 vtt video thumbnails"){
1061				self.vimeoWrapper.css({zIndex:0});
1062				$('iframe#'+self.options.instanceName).attr('src','');
1063			}
1064		}
1065	}
1066	
1067	function onPauseVimeo(id) {
1068        //console.log("vimeo paused")
1069    }
1070    function onFinishVimeo(id) {
1071        self.videoAdPlayed=false;
1072		//console.log("vimeo finished")
1073		self.randEnd = Math.floor((Math.random() * (self.options.videos).length) + 0);
1074
1075        if(self.options.playlist=="Right playlist" || self.options.playlist=="Bottom playlist" || self.options.playlist=="Off")
1076        {
1077            self.videoid = parseInt(self.videoid)+1;
1078            if (self.videos_array.length == self.videoid){
1079                self.videoid = 0;
1080            }
1081            if(self.options.onFinish=="Play next video" && self.toggleAutoplayBtnEnabled)
1082            {
1083				if(self.VIDEO.shuffleBtnEnabled){
1084					self.VIDEO.setPlaylistItem(self.randEnd);
1085					self.videoid = self.randEnd;
1086				}
1087				else{
1088					self.VIDEO.setPlaylistItem(self.videoid);
1089				}
1090				self.VIDEO.playVideoById(self.videoid);
1091				self.addVimeoListeners();
1092            }
1093            else if(self.options.onFinish=="Restart video")
1094            {
1095                self.VIDEO.vimeoPlay();
1096
1097            }
1098            else if(self.options.onFinish=="Stop video")
1099            {
1100                if(self.options.posterImgOnVideoFinish != ""){
1101					self.VIDEO.showPoster2();
1102				}
1103            }
1104        }
1105		else{
1106			if(self.options.onFinish=="Restart video")
1107            {
1108                self.VIDEO.vimeoPlay();
1109            }
1110            else if(self.options.onFinish=="Stop video")
1111            {
1112                //load more videos
1113            }
1114		}
1115    }
1116    function onTimeupdate(data, id) {
1117		
1118		self.VIDEO.vimeoCurrentTime = data.seconds;
1119        self.vimeo_time = Math.floor(data.seconds);
1120        self.vimeo_duration = Math.floor(data.duration);
1121		
1122        if(self.vimeo_time == 0 && (self.videos_array[self.videoid].prerollAD==true||self.videos_array[self.videoid].prerollAD=="yes")){
1123            //play ad
1124            self.VIDEO.videoAdStarted = true;
1125
1126            if(self.videoAdPlayed){
1127                self.VIDEO.vimeoPlay();
1128            }
1129            else {
1130                self.vimeoPlayer.pause();
1131                if(self.myVideo.canPlayType && self.myVideo.canPlayType('video/mp4').replace(/no/, ''))
1132                {
1133                    this.canPlay = true;
1134                    self.video_pathAD = self.videos_array[self.videoid].preroll_mp4;
1135                }
1136                self.VIDEO.loadAD(self.video_pathAD, "prerollActive");
1137                self.VIDEO.openAD();
1138            }
1139        }
1140		
1141		self.tim = setInterval(function() {
1142			
1143			if(self.options.videos[self.videoid].videoType=="HTML5" || self.options.videoType=="HTML5 (self-hosted)")
1144			return;
1145		
1146			if(self.VIDEO.secondsFormat(self.vimeo_time) == self.videos_array[self.videoid].midrollAD_displayTime)
1147			{
1148				if(self.VIDEO.midrollPlayed)
1149					return
1150				self.VIDEO.midrollPlayed = true;
1151				if(self.videos_array[self.videoid].midrollAD==true || self.videos_array[self.videoid].midrollAD=="yes")
1152				{
1153					if(self.myVideo.canPlayType && self.myVideo.canPlayType('video/mp4').replace(/no/, ''))
1154					{
1155						self.canPlay = true;
1156						self.video_pathAD = self.videos_array[self.videoid].midroll_mp4;
1157					}
1158					self.vimeoPlayer.pause();
1159					self.VIDEO.loadAD(self.video_pathAD, "midrollActive");
1160					self.VIDEO.openAD();
1161				}
1162			}
1163			if(self.VIDEO.secondsFormat(self.vimeo_time) >= self.VIDEO.secondsFormat(self.vimeo_duration-1) && self.vimeo_duration>0)
1164			{
1165				if(self.VIDEO.postrollPlayed)
1166					return
1167				self.VIDEO.postrollPlayed = true;
1168				if(self.videos_array[self.videoid].postrollAD==true || self.videos_array[self.videoid].postrollAD=="yes")
1169				{
1170					if(self.myVideo.canPlayType && self.myVideo.canPlayType('video/mp4').replace(/no/, ''))
1171					{
1172						self.canPlay = true;
1173						self.video_pathAD = self.videos_array[self.videoid].postroll_mp4;
1174					}
1175					self.vimeoPlayer.pause();
1176					self.VIDEO.loadAD(self.video_pathAD, "postrollActive");
1177					self.VIDEO.openAD();
1178				}
1179			}
1180		}, 50);
1181		
1182		if(self.videos_array[self.videoid].popupAdShow){
1183            self.VIDEO.enablePopup();
1184        }
1185    }
1186	
1187	function onVolumeChangeVimeo(data){
1188        var volume = data;
1189        self.VIDEO.hideMutedBox();
1190		self.vimeoPlayer.getVolume().then(function(volume) {
1191			self.vimeoMuted = false;
1192			self.VIDEO.volRatio = volume;
1193			
1194			self.VIDEO.volPerc = volume
1195			
1196			// self.VIDEO.initialVolumeProgressWidth = self.VIDEO.volumeTrackProgress.width();
1197			self.VIDEO.savedVolumeBarWidth = self.VIDEO.volumeTrack.width() * volume
1198			self.VIDEO.volumeTrackProgress.width(self.VIDEO.savedVolumeBarWidth)
1199		});
1200    }
1201	
1202}
1203PLAYER.Playlist.prototype.hidePlaylist = function(){
1204	
1205	this.playlist.hide();
1206	
1207}
1208PLAYER.Playlist.prototype.showPlaylist = function(){
1209	
1210	this.playlist.show();
1211	
1212}
1213PLAYER.Playlist.prototype.resizePlaylist = function(val1, val2){
1214	
1215	var self=this;
1216	switch(this.options.playlist) {
1217		case 'Right playlist':
1218			this.playlist.css({
1219				right:0,
1220				height:"100%"
1221			});
1222			this.playlistContent.css({
1223				position: "absolute",
1224				top:44,
1225				height:self.mainContainer.height()-44,
1226				width:"100%"
1227			});
1228			this.playlistContent.height(this.mainContainer.height()-this.playlistBar.height()-this.playlistBarSearch.height());
1229			break;
1230		case 'Bottom playlist':
1231			this.playlist.css({
1232				left:0,
1233				width:"100%",
1234				bottom:0
1235			});
1236			this.playlistContent.height(this.playlist.height()-this.playlistBar.height());
1237			break;
1238	}	
1239}
1240PLAYER.Playlist.prototype.playYoutube = function(obj_id){
1241
1242	var startSec = parseInt(this.videos_array[obj_id].youtubeIDStartSeconds);
1243	if(startSec == "")
1244		startSec = 0;
1245	
1246	if(this.VIDEO.youtubePlayer!= undefined){
1247		this.VIDEO.youtubePlayer.cueVideoById(this.videos_array[obj_id].youtubeID, this.videos_array[obj_id].youtubeIDStartSeconds);
1248		this.VIDEO.youtubePlayer.setPlaybackQuality(this.ytQuality);
1249		this.preloader.hide();
1250		this.VIDEO.ytWrapper.css({zIndex:501});
1251		this.VIDEO.ytWrapper.css({visibility:"visible"});
1252		if(!this.isMobile.any())
1253			this.VIDEO.youtubePlayer.playVideo();
1254	}
1255	this.VIDEO.resizeAll();
1256	
1257}

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.