PageSourceSearch

https://radiofusion.fr/wp-content/plugins/qtmplayer/assets/js/qtmplayer.js?ver=PR.8.0

js radiofusion.fr collected 2026-10-04 02:40:37 UTC 41,611 bytes, 1,487 lines download raw bytes

1/** @license
2 *
3 * ProRadio Music Player: JavaScript player with audio analyzer
4 * ----------------------------------------------
5 * http://proradio.com/
6 *
7 * Copyright (c) 2020-2021, ProRadio / Igor Nardo. All rights reserved.
8 * This software cna be used only within our products. It can't be edited or modified for reuse under other projects.
9 * Cannot be re-sold or embedded in other products for sale.
10 *
11 */
12
13
14// IMPORTANT: THE FOLLOWING IS NOT A COMMENT! IT IS JAVASCIPT IMPORTING! DO NOT DELETE
15// ===================================================================================
16// @codekit-prepend "../components/raphael/raphael.min.js"
17// @codekit-prepend "../soundmanager/script/soundmanager2-nodebug-jsmin.js"
18// @codekit-prepend "qtmplayer-smpo.js"
19// @codekit-prepend "qtmplayer-radiofeed.js"
20
21// Not required			codekit-prepend "qtmplayer-webapiplayer.js" 
22
23(function($){
24	
25	var qtPlayDebug = $('#qtmplayer').data('qtmplayer-debugger');
26	var qtAnalyzer  = $('#qtmplayer').data('analyzer'); // disable webaudio
27	var qtInitialized = false;
28	var qtPlayIsAllowed = false;
29	var qtShowPlayer  = $('#qtmplayer').data('showplayer'); // disable webaudio
30
31
32	if( /MSIE|Edge|Trident/i.test(navigator.userAgent) || ( navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1 ) ){
33		qtAnalyzer = 0;
34	}
35
36	function qtMplayer_filename(path){
37		path = path.substring(path.lastIndexOf("/")+ 1);
38		return (path.match(/[^.]+(\.[^?#]+)?/) || [])[0];
39	}
40
41	// since 3.0.2 moved browser detection to mobile
42	var qtMplayerisMobile = false;
43	if( /MSIE|Edge|Trident/i.test(navigator.userAgent) 
44		|| ( 
45			navigator.userAgent.indexOf('Safari') != -1 
46			&& 
47			navigator.userAgent.indexOf('Chrome') == -1 
48			) 
49		){
50		qtMplayerisMobile = true;
51	}
52	if( /iPad/i.test(navigator.userAgent) ){
53		qtMplayerisMobile = true;
54	}
55	if( /iPhone/i.test(navigator.userAgent) ){
56		qtMplayerisMobile = true;
57	}
58	if (screen.width <= 1119){ 
59		qtMplayerisMobile = true;
60	}
61	if(true === qtMplayerisMobile){
62		qtAnalyzer = 0;
63	}
64
65
66	$.qtMplayerGlobalSongData = {
67		title: false,
68		artist: false,
69		thumbnail: false
70	};
71
72	$.qtMplayerPlaylistCue = {
73		minicue: false,
74		tadv: false,
75		init: function(){
76			$.qtMplayerPlaylistCue.destroy();
77			var item, offset, width,left,
78				minicue, det;;
79			item = $("li.qtmplayer-played");
80			if(item.length > 0){
81				offset = item.offset().left;
82				width =  item.width();
83				left = 0;
84				item.append('<div id="qtMplayerPlaylistTrack" class="qtmplayer-playlist__track"><span id="qtMplayerPlaylistTrackAdv" data-qtmplayer-trackadv class="qtmplayer-track-adv qtmplayer-content-accent"></span>
84<span id="qtMplayerPlaylistMinicue" class="qtmplayer-playlist-minicue"></span></div>');
85				$.qtMplayerPlaylistCue.minicue = $("#qtMplayerPlaylistMinicue");
86				$.qtMplayerPlaylistCue.tadv = $("#qtMplayerPlaylistTrackAdv");
87				det = $("#qtMplayerPlaylistTrack");
88				det.off("mousemove").off("click");
89				det.on("mousemove", function(e){
90					left = e.clientX - offset;
91					$.qtMplayerPlaylistCue.minicue.css({
92						'left': left,
93						'transition': 'left 0.1s'
94					});
95				});
96				det.on("click", function(e){
97					$.qtPlayerObj.uniPlayer.seek((e.clientX - offset) / width * 100);
98				});
99			}
100		},
101		update:function(p){
102			if($.qtMplayerPlaylistCue.tadv){
103				$.qtMplayerPlaylistCue.tadv.css({"width": p+'%'});
104			}
105			if($.qtMplayerPlaylistCue.minicue){
106				// $.qtMplayerPlaylistCue.minicue.css({"left": p+'%'});
107			}
108		},
109		destroy: function(){
110			$("#qtMplayerPlaylistTrack").remove();
111		}
112	};
113
114	/**
115	 * ===========================================================================
116	 * Circle for podcast
117	 * @type {Object}
118	 * ===========================================================================
119	 */
120	$.qtRaphaelCircle = {
121		container: $(".qtmplayer-circularplayer"),
122		findXY: function(obj) {
123			var curleft = 0, curtop = 0;
124			do {
125				curleft += obj.offsetLeft;
126				curtop += obj.offsetTop;
127			} while (!!(obj = obj.offsetParent));
128			return [curleft,curtop];
129		},
130		getScrollLeft: function() {
131			return ($('body').scrollLeft+document.documentElement.scrollLeft);
132		},
133		getScrollTop: function() {
134			return ($('body').scrollTop+document.documentElement.scrollTop);
135		},
136		init: function(){
137
138			var RC = $.qtRaphaelCircle,
139				rcontainer = $("#qtdonut"),
140				
141				cH = rcontainer.height(),
142				cW = rcontainer.width(),
143				R = cH / 2;
144			RC.destroy();
145			rcontainer.find("svg").remove();
146			RC.R = R;
147			var archtype = new Raphael("qtdonut", cW, cH);
148			archtype.customAttributes.arc = function (xloc, yloc, value, total, R) {
149				var alpha = 360 / total * value,
150					a = (90 - alpha) * Math.PI / 180,
151					x = xloc + R * Math.cos(a),
152					y = yloc - R * Math.sin(a),
153					path;
154				if (total === value) {
155					path = [
156						["M", xloc, yloc - R],
157						["A", R, R, 0, 1, 1, xloc, yloc - R]
158					];
159				} else {
160					path = [
161						["M", xloc, yloc - R],
162						["A", R, R, 0, +(alpha > 180), 1, x, y]
163					];
164				}
165				return {
166					path: path
167				};
168			};
169			var my_arc = archtype.path().attr({
170				"stroke": "#fff",
171				"stroke-width": '22px',
172				arc: [0, 0, 0, 0, 0]
173			});
174			RC.arc = my_arc;
175			RC.container = rcontainer;
176			var	uA = navigator.userAgent,
177				isOpera = (uA.match(/opera/i)),
178				isChrome = (uA.match(/chrome/i)),
179				isTouchDevice = (uA.match(/ipad|iphone/i)),
180				fullCircle = (isOpera||isChrome?359.9:360),
181				angle, offl, offt,
182				dx,dy,coords, perc;
183
184			rcontainer.on('click','svg',function(e){
185				e = e?e:window.event;
186				if (isTouchDevice && e.touches) {
187					e = e.touches[0];
188				}
189				if (e.pageX || e.pageY) {
190					coords = [e.pageX,e.pageY];
191				} else if (e.clientX || e.clientY) {
192					coords = [e.clientX+RC.getScrollLeft(),e.clientY+RC.getScrollTop()];
193				}
194				offl = rcontainer.offset().left;
195				offt = rcontainer.offset().top - $(window).scrollTop() ;
196				dx = e.clientX -  (offl + (cW / 2));
197				dy = e.clientY -  (offt + (cH / 2));
198				angle = Math.floor(fullCircle-(  (Math.atan2(dx,dy) * 180/Math.PI )  +180));
199				perc = angle/fullCircle * 100;
200				$.qtPlayerObj.uniPlayer.seek(perc);
201			});
202			rcontainer.addClass("active");
203		},
204		update: function(p){
205			var RC = $.qtRaphaelCircle,
206				R = RC.R;
207			if(typeof(p) === 'undefined' || typeof(RC.arc) === 'undefined' ){
208				return;
209			}
210			if(isNaN(p)){
211				return;
212			}
213			RC.arc.animate({
214				arc: [R, R, p*100, 100, R]
215			}, 2, "ease");
216		},
217		destroy: function(){
218			var RC = $.qtRaphaelCircle;
219
220			if(typeof(RC.arc) !== 'undefined'){
221				RC.arc.remove();
222				RC.container.removeClass('active');
223			}
224			if(typeof(RC.container) !== 'undefined'){
225				RC.container.removeClass('active');
226			}
227		}
228	};
229
230
231
232
233	$.qtPlayerObj = {
234		isSoundApi: false,
235		playing: false,
236		hasDoneAutoplay: false,
237		masterVolume:  $('#qtmplayer').data('qtmplayer-startvol'),//100,
238		ProRadioUserManagerIntegration: {
239			shouldBlock: function( songdata ){
240				if('undefined' == typeof($.ProRadioUserManager)){
241					return;
242				}
243				if( 'undefined' === typeof( songdata ) ){
244					songdata = $.qtPlayerObj.songdata;
245				}
246				var prum = $.ProRadioUserManager;
247				var blocking = $.qtPlayerObj.songdata.blocking;
248				
249				if( undefined !== blocking ){
250					console.log( blocking );
251					prum.fn.modal.openModal(prum, blocking);
252					return true;
253				} 
254				return false;
255			}
256		},
257		uniPlayer: {
258			btnPlay: $("[data-qtmplayer-playbtn]"), //btnPlay: $("#qtmplayerPlay"),
259			canMoove: true,
260			pause: function(){
261				// qtmplayer-radiofeed.js
262				$.qtPlayerObj.playing = false;
263				if('object' === typeof($.qtmplayerRadioFeedObj)){ // check if the file is loaded
264					$.qtmplayerRadioFeedObj.fn.stopFeed();
265				}
266				$.qtPlayerObj.interface.justStop();
267				if( 'radio' === $.qtPlayerObj.songdata.type ){
268					// With this, after pausing from the bar, music can't restart
269					$.qtPlayerObj.songdata.file_hold = $.qtPlayerObj.songdata.file; // Store stream in a temorary object
270					$.qtPlayerObj.songdata.file = 'file_hold'; // replace stream with a string to block it
271					$.qtPlayerObj.interface.doSpinner(false);
272					if($.qtPlayerObj.isSoundApi === true){
273						$.qtWebApiPlayer.stop();
274					} else {
275						$.qtSMPO.smStop();
276					}
277
278				} else {
279					if($.qtPlayerObj.isSoundApi === true){
280						$.qtWebApiPlayer.pause();
281					} else {
282						$.qtSMPO.smPause();
283					}
284				}
285			},
286			webapiPlay: function(){
287				$.qtWebApiPlayer.play($.qtPlayerObj.songdata.file);
288			},
289			radioFeedCallback:function( feedImageUrl ){
290				var fallback = $.qtPlayerObj.imgCover.attr('data-fallback');
291				if(undefined !== feedImageUrl){
292					$.qtPlayerObj.imgCover.attr( 'src', feedImageUrl ).show();
293				} else {
294					if(fallback) {
295						$.qtPlayerObj.imgCover.attr('src', fallback).show();
296					} else {
297						$.qtPlayerObj.imgCover.hide();
298					}
299				}
300			},
301			play: function(){
302
303				if('function' == typeof($.qtmplayerRadioFeedObj.fn.updateMediaData)){
304					// console.log('Play update;');
305					$.qtmplayerRadioFeedObj.fn.updateMediaData();
306				}
307
308
309				if ($.qtPlayerObj.uniPlayer.btnPlay.find("i.material-icons").html() === 'pause') {
310					return;
311				}
312				if(qtInitialized && qtPlayIsAllowed){
313					$.qtPlayerObj.uniPlayer.btnPlay.find("i.material-icons").html("pause");
314					if($.qtPlayerObj.isSoundApi === true){
315						$.qtWebApiPlayer.play($.qtPlayerObj.songdata.file);
316					} else {
317						if( 'radio' === $.qtPlayerObj.songdata.type && 'file_hold' === $.qtPlayerObj.songdata.file ){
318							$.qtPlayerObj.songdata.file = $.qtPlayerObj.songdata.file_hold;
319							// FIX-2021-06-16_01 - set volume fix after change track
320							// fix issue when after pause the feed doesn't restart
321							$.qtmplayerRadioFeedObj.fn.pushFeed( $.qtPlayerObj.songdata );
322
323						}
324						
325						// console.log( $.qtPlayerObj.songdata );
326						if('undefined' !== typeof($.qtMplayerStats)){
327							$.qtMplayerStats.sendHit( $.qtPlayerObj.songdata );
328						}
329
330						$.qtSMPO.smPause();
331						$.qtSMPO.smPlay();
332					}
333					// FIX-2021-06-16_02 - set volume fix after change track
334					setTimeout(
335						function(){
336							if($.qtPlayerObj.masterVolume !== 100){
337								var mvol = $.qtPlayerObj.masterVolume;
338								$.qtPlayerObj.uniPlayer.setVolume( mvol );
339								$("[data-qtmplayer-vball]").css({'top': 100 - mvol});
340								$("[data-qtmplayer-vfill]").css({'height':mvol+'%'});
341							}
342						}, 300
343					);
344					$.qtPlayerObj.playing = true;
345				}
346			},
347			seek: function(p){ // p = percentage
348				if(isNaN(p)){
349					return;
350				}
351				p = parseFloat(p);
352				if(p > 100){
353					p = 100;
354				}
355				if($.qtPlayerObj.isSoundApi === true){
356					$.qtWebApiPlayer.seek(p);
357				} else {
358					$.qtSMPO.smSeek(p);
359				}
360			},
361			seekTime: function(t){
362				if(t === '00:00'){
363					t = '00:00:00';
364				}
365				if($.qtPlayerObj.isSoundApi === true){
366					$.qtWebApiPlayer.seekTime(t);
367				} else {
368					$.qtSMPO.smSeekTime(t);
369				}
370			},
371			setVolume: function(v){
372				// console.log(v);
373				$.qtPlayerObj.masterVolume = v;
374				if($.qtPlayerObj.isSoundApi === true){
375					$.qtWebApiPlayer.setvolume(v / 100);
376				} else {
377					$.qtSMPO.sm.setVolume(v);
378				}
379			}
380		},
381
382
383		/**
384		 * ================================================================
385		 * 
386		 * [interface functions controlling interaction and visual feedback]
387		 * @type {Object}
388		 *
389		 * ================================================================ 
390		 */
391		interface: {
392			window: $(window),
393			body: $("body"),
394			htmlAndbody: $('html,body'),
395			player: $('#qtmplayer'),
396			controls: $('#qtmplayer-controls'),
397			qtmplayer: $('#qtmplayer-playlistcontainer'),
398			playlist: $("#qtmplayer-playlist ul"),
399			grooveadv:  $('#qtMplayerTadv'), // music cue
400			buffer:  $('#qtMplayerBuffer'), // buffer
401			progWave:  $('#qtMplayerprogWave'), // buffer
402			advance: $("#qtMplayerTadv"),
403			btnPlay: $("[data-qtmplayer-playbtn]"), // $("#qtmplayerPlay"),
404			control: $("#qtmplayerTrackControl"),
405			minicue: $("#qtMplayerMiniCue"),
406			minicueT: $("#qtMplayerPlaylistTrackMinicue"),
407			trackAdvance: $("#qtmplayerTrackAdv"),
408			time: $("#qtmplayerTime"),
409			autoplay: $('#qtmplayer').data('autoplay'),
410			artwork: $('#qtmplayer').data('artwork'),
411			dragging: false,
412			vdragging: false,
413			debug: function(msg){
414				$("#qtmplayerDebug").prepend(msg+'<br>');
415			},
416			doSpinner: function(state, content){
417				var notif = $('[data-qtmplayerNotif]');
418				notif.html(content);
419				if( true === state ){ 
420					notif.addClass("active qtmplayer-spinner"); 
421				} else {
422					notif.removeClass("active").removeClass("qtmplayer-spinner"); 
423				}
424			},
425			preloadTrack: function(qtmpid){
426				var p = $.qtPlayerObj,
427					i = p.interface;
428				p.interface.doSpinner(true);
429
430				// Since 3.9.4 preload custom track // still in alpha (incomplete function)
431				var firstTrack = "li:first-child";
432				// if( false !== qtmpid ){
433				// 	console.log(qtmpid) ;
434				// 	firstTrack = 'li[data-qtmplayer-qtmpid="'+qtmpid+'"]';
435				// }
436
437				i.playlist.find(firstTrack + " .qtmplayer-play-btn").each(function(i,c){
438					var trk = $(c),
439						q = 'qtmplayer-';
440
441					p.songdata = {};
442					$.each(trk.data() , function(i,c){
443						var newKey = i.replace("qtmplayer", "").toLowerCase();
444						p.songdata[newKey] = c;
445					});
446
447
448					$('.qtmplayer-played').removeClass('qtmplayer-played');
449					trk.closest(".qtmplayer-trackitem").addClass("qtmplayer-played");
450					var c = $.qtPlayerObj.interface.controls,
451						ot = false;
452					if(qtShowPlayer){
453						p.interface.showhide();
454					}
455
456
457					if(p.interface.deployTrack()){
458						if(p.interface.autoplay){
459							setTimeout(
460								p.uniPlayer.play, 
461								2200
462							);
463						}
464					}
465				});
466			},
467
468			isMobile: function(){
469				return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || $(window).width() < 1170 ;
470			},
471
472
473			deployTrack: function(autoplay){
474				var o = $.qtPlayerObj,
475					i = o.interface,
476					hd = i.controls,
477					dt = o.songdata,
478					mp = i.qtmplayer,
479					durtime = $("#qtmplayerDuration"),
480					cartlink,
481					cartbt = hd.find('.qtmplayer__cart'),
482					cur_url = window.location.href,
483					wc_params = '',
484					wc_classes = '',
485					params, // for URL
486					params_str; // for URL
487				if(dt.file == ''){
488					return;
489				}
490
491				
492				if(true === qtMplayerisMobile && $.qtPlayerObj.songdata.file_mobile && screen.width <= 1119 ){
493					$.qtPlayerObj.songdata.file = $.qtPlayerObj.songdata.file_mobile;
494				}
495
496				// console.log( 'Is mobile? ' + qtMplayerisMobile + screen.width );
497
498
499				i.doSpinner(true);
500
501				if(false == qtInitialized){
502					setTimeout(
503						i.doSpinner, 
504						1000
505					);
506				}
507
508				$.qtPlayerObj.interface.waveformAdvance = false;
509
510				if( 'radio' === dt.type ){
511					i.minicue.hide();
512					i.buffer.hide();
513					i.trackAdvance.hide();
514					durtime.hide();
515					i.control.addClass('qtmplayer-is-radio');
516					$('#qtmplayerTrackControl canvas').remove();
517					if( $.qtmplayerRadioFeedObj ){
518						$.qtPlayerObj.songdata.callBack = false;
519						if( $.qtPlayerObj.interface.artwork ){
520							$.qtPlayerObj.imgCover = $.qtPlayerObj.interface.controls.find('.qtmplayer__cover img');
521							var original = $.qtPlayerObj.imgCover.attr('src');
522							if( original ){
523								$.qtPlayerObj.imgCover.attr('data-fallback', original);
524							}
525							$.qtPlayerObj.interface.controls.find('.qtmplayer__cover img').attr('data-fallback', original);
526							$.qtPlayerObj.songdata.callBack = $.qtPlayerObj.uniPlayer.radioFeedCallback;
527						}
528						$.qtmplayerRadioFeedObj.fn.pushFeed( $.qtPlayerObj.songdata );
529					}
530				} else {
531					i.control.removeClass('qtmplayer-is-radio');
532					if( $.qtmplayerRadioFeedObj ){
533						$.qtmplayerRadioFeedObj.fn.stopFeed();
534					}
535
536					i.minicue.show();
537					i.buffer.show();
538					i.trackAdvance.show();
539					durtime.show();
540					if( false === i.isMobile() ){
541						var comp = new RegExp(location.host);
542						try {
543							if(comp.test( dt.file ) && 'function' === typeof(qtDrawAudio)){
544								qtDrawAudio(dt.file);
545								$.qtPlayerObj.interface.waveformAdvance = $('#qtwaveformClone');
546							} else {
547								$('#qtmplayerTrackControl canvas').remove();
548							}
549						} catch(e){
550							console.log(e);
551						}
552					}
553				}
554
555				if(dt.buylink == '' || dt.buylink == 'undefined' || typeof(dt.buylink) === 'undefined'){
556					cartbt.css({'opacity':0, 'pointer-events': 'none'});
557				} else {
558					cartbt.css({'opacity':1, 'pointer-events': 'initial'});
559				}
560
561
562				$('.qtmplayer__actions .added_to_cart.wc-forward').remove();
563
564				if( dt.link !== ''){
565					hd.find('.qtmplayer__title').html('<a href="'+dt.link+'"><strong>'+dt.title+'</strong></a> ');
566				} else {
567					hd.find('.qtmplayer__title').html(dt.title);
568				}
569
570
571				hd.find('.qtmplayer__artist').text(dt.artist);
572				if(typeof( dt.album ) !== 'undefined' && dt.album !== ''){
573					hd.find('.qtmplayer__title').append('['+dt.album+']');
574					$.qtMplayerGlobalSongData.album = dt.album;
575				}
576				hd.find('.qtmplayer__cover').attr("href", dt.link);
577
578
579				$.qtMplayerGlobalSongData.title = dt.title;
580				$.qtMplayerGlobalSongData.artist = dt.artist;
581				if( dt.cover ){
582					$.qtMplayerGlobalSongData.thumbnail = dt.cover;
583				} else {
584					$.qtMplayerGlobalSongData.thumbnail = false;
585				}
586
587				// WooCommerce support added
588				cartbt.addClass('qtmplayer__disabled');
589				cartbt.off('click');
590				if(dt.buylink !== ''){
591					cartbt.removeClass('qtmplayer__disabled');
592					// WooCommerce
593					cartlink = dt.buylink;
594					if('undefined' !== typeof( dt.buylink )) { 
595						dt.buylink = dt.buylink.toString(); 
596						if (dt.buylink.match(/^-?\d+$/)) { // is a numeric ID
597							params = { "add-to-cart":dt.buylink };
598							params_str = jQuery.param( params );
599							if(cur_url.indexOf('?') != -1) {
600								cartlink = cur_url+"&"+params_str;
601							}else{
602								cartlink = cur_url+"?"+params_str;
603							}
604							// Extra cart classes and attrs
605							wc_classes = ' product_type_simple add_to_cart_button ajax_add_to_cart ';
606							cartbt.attr("href", cartlink).attr('data-quantity','1').attr('data-product_id', dt.buylink).addClass(wc_classes).show();
607						} else {
608							cartbt.attr("href", dt.buylink).removeClass('product_type_simple').removeClass('add_to_cart_button').removeClass('ajax_add_to_cart').show();
609						}
610
611						// PR.6.3.0
612						// If link is another domain, add target _blank, or remove it
613						var linkUrl  = new URL( cartlink );
614						if( linkUrl.host === window.location.host && ! $('body').hasClass('qtmplayer--page-popup') ){
615							cartbt.attr('target', '');
616						} else {
617							cartbt.attr('target', '_blank');
618						}
619					}
620
621					
622
623
624					if(dt.icon == 'download') {
625						dt.icon = 'file_download';
626					} 
627					cartbt.show();
628				} else {
629					cartbt.hide();
630					cartbt.removeClass('product_type_simple').removeClass('add_to_cart_button').removeClass('ajax_add_to_cart');
631				}
632
633				
634				
635		
636
637				cartbt.find('i').html(dt.icon);
638
639				i.advance.width(0);
640
641				if( false !== i.waveformAdvance && "undefined" !== typeof(i.waveformAdvance) ){
642					i.waveformAdvance.css({
643						"clip-path": "polygon(0 0, 0% 0, 0% 100%, 0% 100%)"
644					});
645				}
646
647
648				i.buffer.width(0);
649				if(dt.cover !== '' && dt.cover !== undefined){
650					mp.find('.qtmplayer__album img').attr("src", dt.cover).show();
651					hd.find('.qtmplayer__cover img').attr("src", dt.cover).show();
652					hd.find('.qtmplayer__bgimg').css({"background-image": 'url('+dt.cover+')' });
653				} else {
654					mp.find('.qtmplayer__album img').hide();
655					hd.find('.qtmplayer__cover img').hide();
656					hd.find('.qtmplayer__bgimg').css({"background-image": 'none' });
657				}
658				mp.find('.qtmplayer-albumlink').attr("href",dt.link);
659				if(qtShowPlayer){
660					i.showhide();
661				}
662
663
664
665
666				i.btnPlayClick();
667				i.playTrack();
668				if(autoplay){
669					o.uniPlayer.play();
670				}
671				return true;
672			},
673			btnPlaySetup: function(dt){
674				var state = 'pause', 
675					o = $.qtPlayerObj,
676					i = o.interface,
677					b = i.btnPlay,
678					p = o.uniPlayer;
679
680				b.off("click");
681				b.on("click", function(e){
682					e.preventDefault();
683					state = b.find("i").html();
684					if(state === 'pause'){
685						$(".qtmplayer-played .qtmplayer-play-btn").click();
686					} else {
687						$('#qtmplayer-playlist li:first-child').find(".qtmplayer-play-btn").click();
688					}
689				});
690			},
691			/**
692			 * Questa funzione è probabilmente inutile adesso
693			 */
694			btnPlayClick: function(){
695
696				var state = 'pause', 
697					o = $.qtPlayerObj,
698					i = o.interface,
699					b = i.btnPlay,
700					p = o.uniPlayer;
701				b.off("click");
702				b.on("click", function(e){
703					e.preventDefault();
704					// state = b.find("i").html();
705					state = b.find("i.material-icons").html();
706					if(state === 'pause'){
707						p.pause();
708					} else {
709
710						
711
712						if(false == qtInitialized){
713							i.doSpinner(true);
714							i.initializeAudio();
715							if( true === $.qtPlayerObj.ProRadioUserManagerIntegration.shouldBlock() ){
716								i.doSpinner(false);
717								return;
718							}
719							qtPlayIsAllowed = true;
720							setTimeout(
721								p.play, 
722								200
723							);
724						} else {
725							if( true === $.qtPlayerObj.ProRadioUserManagerIntegration.shouldBlock() ){
726								i.doSpinner(false);
727								return;
728							}
729							qtPlayIsAllowed = true;
730							p.play();
731						}
732					}
733					return true;
734				});
735			},
736			playTrack: function(){
737				var p = $.qtPlayerObj,
738					i = p.interface,
739					u = p.uniPlayer;
740				i.body.off("click", ".qtmplayer-play-btn");
741				i.body.on("click", ".qtmplayer-play-btn", function(e){
742					e.preventDefault();		
743
744
745					
746
747					qtPlayIsAllowed = true;
748					i.doSpinner(true);
749					var tr = $(this),
750						item = tr.closest(".qtmplayer-trackitem"),
751						isDonut = item.hasClass("qtmplayer-donut"),
752						icon = tr.find("i"),
753						clickedsong = tr.attr('data-qtmplayer-file'),
754						playedclass = "qtmplayer-played",
755						playedtrack = i.body.find("."+playedclass),
756						iplay =  "dripicons-media-play",
757						ipause = "dripicons-media-pause";
758					if(item.hasClass(playedclass) && tr.find('i').html() === 'pause'){
759						i.switchicon(icon, 'play');
760						item.removeClass(playedclass);
761						i.switchicon(playedtrack.find('.qtmplayer-play-btn i.material-icons'), 'play');
762						u.pause();
763						e.stopPropagation();
764						return;
765					} else {
766						// Check if is the same track. If yes pause, if not stop the first play the second
767						// update 2019 05 22
768						if(clickedsong === p.songdata.file) {
769							if(playedtrack.length > 0){
770
771								if(p.uniPlayer.btnPlay.find("i.material-icons").html() === 'pause'){
772									playedtrack.removeClass(playedclass);
773									i.switchicon(playedtrack.find('.qtmplayer-play-btn i.material-icons'), 'play');
774									u.pause();
775									e.stopPropagation();
776									return;
777								} else {
778									u.pause();
779									i.switchicon(playedtrack.find('.qtmplayer-play-btn i.material-icons'), 'play');
780									playedtrack.removeClass(playedclass);
781								}
782
783							}
784						} else {
785							i.switchicon(playedtrack.find('.qtmplayer-play-btn i.material-icons'), 'play');
786							playedtrack.removeClass(playedclass);
787							i.justStop();
788							u.pause();
789						}
790					
791
792						if( undefined === tr.data("qtmplayer-type") ){
793							tr.data("qtmplayer-type", 'track');
794						}
795
796
797						// 2019 12 29 new faster remapping of data
798						p.songdata = {};
799						
800						$.each(tr.data() , function(i,c){
801							var newKey = i.replace("qtmplayer", "").toLowerCase();
802							p.songdata[newKey] = c;
803						});
804
805						
806						i.deployTrack();
807
808						if( true === $.qtPlayerObj.ProRadioUserManagerIntegration.shouldBlock() ){
809							return;
810						}
811
812						i.seekBtn();
813						i.switchicon(icon, 'pause');
814						item.addClass(playedclass);
815						if($("#qtdonut").length > 0){
816							$("#qtdonut").removeAttr("id");
817						}
818						if(isDonut){
819							item.attr("id", "qtdonut");
820							$.qtMplayerPlaylistCue.destroy();
821							if( 'track' === p.songdata.type){
822								$.qtRaphaelCircle.init();
823							}
824						} else {
825							if( 'track' === p.songdata.type){
826								$.qtMplayerPlaylistCue.init();
827							}
828						}
829
830
831						// safe initialization
832						if(false == qtInitialized){
833							i.initializeAudio();
834							i.doSpinner(true);
835
836
837
838							setTimeout(
839								u.play, 
840								2200
841							);
842						} else {
843							u.play();
844						}
845
846						// u.play();
847					}
848					e.stopPropagation();
849				});
850			},
851			
852			switchicon: function(i, state) {
853				if(state === 'play'){
854					i.html('play_arrow');
855				} else if (state === 'pause') {
856					i.html('pause');
857				}
858			},
859			progressUpdate: function(perc){ // buffered
860				var i = $.qtPlayerObj.interface,
861					p = perc * 100;
862				i.buffer.css({width: p+'%'});
863				i.minicue.addClass('actvd');
864				
865			},
866			timeupdate: function(perc, time){
867				var i = $.qtPlayerObj.interface,
868					p = perc * 100;
869				i.advance.css({
870					width: (p)+'%',
871					'transition':'width 0.3s',
872				});
873				if(false !== i.waveformAdvance && "undefined" !== typeof( i.waveformAdvance ) ){
874					i.waveformAdvance.css({
875						'transition':'clip-path 0.3s',
876						"clip-path": "polygon(0 0, "+(p)+"% 0, "+(p)+"% 100%, 0% 100%)"
877					});
878				}
879				i.time.html(time);
880				if(perc > 0.001){
881					i.doSpinner();
882					setTimeout(
883						i.doSpinner, 
884						300
885					);
886				}
887				if($('#qtMplayerprogWave')){
888					$('#qtMplayerprogWave').css({width: (p)+'%'});
889				}
890				if(i.dragging === false) {
891				
892					i.minicue.css({
893						'transition':'left 0.3s',
894						"left": (p)+'%'
895					});
896				}
897			},
898			seekBtn: function(){
899				var o = $.qtPlayerObj,
900					i = o.interface,
901					c = i.control,
902					m = i.minicue,
903					ol = c.offset().left,
904					w = c.outerWidth(),
905					t = (o.songdata.type == 'radio') ? 'radio' : 'track',
906					l,
907					active = false,
908					currentX, currentY, initialX, initialY,
909					xOffset = 0;
910					yOffset = 0;
911					dragItem = m;
912				c.off("touchstart").off("touchend").off('touchmove').off('mousedown').off('mouseup').off('mouseleave').off('mousemove');
913				if(t === 'radio') {
914					m.css({'left': 0});
915				} else {
916					c.on("touchstart", dragStart);
917					c.on("touchend", dragEnd);
918					c.on("touchmove", drag);
919					c.on("mousedown", dragStart);
920					c.on("mouseup", dragEnd);
921					c.on("mouseleave", dragEnd);
922					c.on("mousemove", drag);
923					function dragStart(e) {
924						i.dragging = true; 
925						active = true;
926						m.addClass('qtmplayer-touch');
927					}
928					function dragEnd(e) {
929						i.dragging = false;
930						active = false;
931						m.removeClass('qtmplayer-touch');
932					}
933					function drag(e) {
934						ol = c.offset().left;
935						w = c.outerWidth();
936						if (e.type === "touchmove") {
937							l = e.originalEvent.touches[0].pageX - ol;
938						} else {
939							l = e.clientX - ol;
940						}
941						if(active){
942							relocate(l);
943						}
944					}
945					function relocate(l){
946						var p = l / w;
947						if( p < 0 || p > 99.9 ){
948							return;
949						}
950						m.css({'left': l});
951						o.uniPlayer.seek(p * 100);
952					}
953				}
954			},	
955			appendAlbum: function(){
956				var p = $.qtPlayerObj,
957					i = p.interface,
958					c = i.controls,
959					cartlink,
960					cur_url = window.location.href,
961					wc_params = '',
962					wc_classes = '',
963					params, // for URL
964					params_str, // for URL
965					ot = false, // timeout
966					notif = $('[data-qtmplayerNotif]');
967					i.body.on("click", "[data-qtmplayer-addrelease]", function(e){
968					e.preventDefault();
969					var that = $(this),
970						url = that.data("qtmplayer-addrelease"),
971						playnow = that.data("playnow"),
972						latestAdded = 'qtmplayer-latestadded';
973					if(that.data("qtmplayer-addrelease") == '0'  || that.hasClass("disabled")){
974						return;
975					}
976					$.getJSON(url, function( data ) {
977						var newitem,
978							special_action,
979							tn = data.length;
980						$.each( data, function( key, val ) {
981							// WooCommerce
982							cartlink = val.buylink;
983							if (val.buylink.match(/^-?\d+$/)) { // is a numeric ID
984								params = { "add-to-cart":val.buylink };
985								params_str = jQuery.param( params );
986								if( cur_url) {
987									if( cur_url.indexOf("?")>= 0 ) {
988										cartlink = cur_url+"&"+params_str;
989									}else{
990										cartlink = cur_url+"?"+params_str;
991									}
992								}
993								// Extra cart classes and attrs
994								wc_classes = ' product_type_simple add_to_cart_button ajax_add_to_cart ';
995								wc_params = ' data-quantity="1" data-product_id="'+ val.buylink +'" ';
996							}
997							special_action = '<i class="material-icons">'+val.icon+'</i>';
998							if( typeof(val.price) !== 'undefined'){
999								if (val.price !== ''){
1000									special_action = '<span class="qtmplayer-price qtmplayer-btn qtmplayer-btn-xs qtmplayer-btn-primary">'+val.price+'</span>';
1001								}
1002							}
1003							newitem = '<li class="qtmplayer-trackitem dynamic">';
1004							if(val.cover !== ''){
1005								newitem += '<img src="'+val.cover+'">';
1006							}
1007							newitem += '<span class="qtmplayer-play qtmplayer-link-sec qtmplayer-play-btn '+latestAdded+'" data-qtmplayer-type="track" data-qtmplayer-cover="'+val.cover+'" data-qtmplayer-price="'+val.price+'" data-qtmplayer-file="'+val.file+'" data-qtmplayer-title="'+val.title+'"'+'data-qtmplayer-artist="'+val.artist+'"'+'data-qtmplayer-album="'+val.album+'" data-qtmplayer-link="'+val.link+'" data-qtmplayer-buylink="'+val.buylink+'" data-qtmplayer-icon="'+val.icon+'"><i class="material-icons">play_arrow</i></span><p>	<span class="qtmplayer-tit">'+val.title+'</span><br>	<span class="qtmplayer-art">'+val.artist+'</span></p><a href="'+cartlink+'" '+wc_params+' class="qtmplayer-cart '+ wc_classes +'" target="_blank">'+special_action+'</a></li>';
1008							i.playlist.append(newitem);
1009							if(0 === key && playnow){
1010								$.qtPlayerObj.interface.justStop();
1011								$.qtPlayerObj.uniPlayer.pause();
1012								p.songdata = val;
1013								$("."+latestAdded).click();
1014							}
1015							latestAdded = '';
1016						});
1017						i.showhide();
1018						if(that.data("clickonce") === 1){
1019							that.hide();
1020							
1021							$(that.data("notificate")).addClass("active");
1022
1023						} else {
1024							that.addClass('disabled');
1025							
1026						}
1027						notif.addClass("wait").delay(1500).promise().done(function(){
1028							notif.removeClass("wait");
1029						});
1030						// Disable the functionality
1031						that.attr("data-qtmplayer-addrelease", '0');
1032					});
1033				});
1034			},
1035			showhide: function(){
1036				var c = $.qtPlayerObj.interface.controls;
1037				c.addClass('open');
1038				ot = setTimeout(function() {
1039					c.removeClass('open');
1040					clearTimeout(ot);
1041				}, 4000);
1042			},
1043			prevNext: function(){
1044				$.qtPlayerObj.interface.controls.on("click",".qtmplayer__prev, .qtmplayer__next", function(e){
1045					e.preventDefault();
1046					var t = $(this), b;
1047					$.qtPlayerObj.interface.doSpinner(true);
1048					if(t.data("control") === "prev"){
1049						b = $(".qtmplayer-played").prev();
1050					} else {
1051						b = $(".qtmplayer-played").next();
1052					}
1053					b.find(".qtmplayer-play-btn").click();
1054				});
1055			},
1056			next: function(){
1057				var i = $.qtPlayerObj.interface,
1058					nt = $(".qtmplayer-played").next();
1059				var playedParent = $(".qtmplayer-played").closest(".proradio-chart-track");
1060				if(playedParent.length){
1061					var nextChartTrack = playedParent.next(".proradio-chart-track").find('.collapsible-header');
1062					if(nextChartTrack.length){
1063						nextChartTrack.click();
1064						nt = playedParent.next(".proradio-chart-track").find(".qtmplayer-trackitem");
1065					}
1066				}
1067				if(nt !== undefined){
1068					if(nt.length > 0){
1069						nt.find(".qtmplayer-play-btn").click();
1070					} else {
1071						i.justStop();
1072					}
1073				} else {
1074					i.justStop();
1075				}
1076			},			
1077			justStop: function(){
1078				$.qtPlayerObj.interface.switchicon($(".qtmplayer-played .qtmplayer-play-btn i.material-icons"), 'play');
1079				$.qtPlayerObj.uniPlayer.btnPlay.find("i.material-icons").html("play_arrow");
1080			},
1081			skipCue: function(){
1082				var o = $.qtPlayerObj,
1083					i = o.interface
1084					b = i.btnPlay,
1085					p = o.uniPlayer;
1086				i.body.on('click', '[data-qtplayercue]',function(){
1087					var t = $(this),
1088						k = t.data('qttrackurl'),
1089						c = t.data('qtplayercue');
1090
1091					if("undefined" === typeof( o.songdata.type )) {
1092						return;
1093					}
1094					if(o.songdata.file === k) {
1095						if( $.qtPlayerObj.playing ) {
1096							o.uniPlayer.seekTime(c);
1097						} else {
1098							if(false == qtInitialized){
1099								i.doSpinner(true);
1100								i.initializeAudio();
1101								qtPlayIsAllowed = true;
1102								setTimeout(
1103									p.play, 
1104									200
1105								);
1106							} else {
1107								qtPlayIsAllowed = true;
1108								p.play();
1109							}
1110						}
1111					} else {
1112						console.log('Not this track');
1113					}
1114				});
1115			},
1116			volBtn: function(){
1117				var o = $.qtPlayerObj,
1118					i = o.interface,
1119					c = $("[data-qtmplayer-vcontrol]");
1120				if( 0 === c.length ){ return; }
1121				var	ol = c.offset().top,
1122					w = c.outerHeight(),
1123					ct = $("[data-qtmplayer-vtrack]"), // cue
1124					f = $("[data-qtmplayer-vfill]"), // fill
1125					m = $("[data-qtmplayer-vball]"), // fill
1126					off = c.offset().top,
1127					h =  c.height(),
1128					vi = $('[data-qtmplayer-vicon]'),
1129					t, // top
1130					p = 100, // percentage
1131					tp = 100, // volume before muting to unmute
1132					d; // delta
1133				c.on("touchstart", vdragStart);
1134				c.on("touchend", vdragEnd);
1135				c.on("touchmove", vdrag);
1136				c.on("mousedown", vdragStart);
1137				c.on("mouseup", vdragEnd);
1138				c.on("mouseleave", vdragEnd);
1139				c.on("mousemove", vdrag);
1140				var vactive = false;
1141				var vcurrentX;
1142				var vcurrentY;
1143				var vinitialX;
1144				var vinitialY;
1145				var vxOffset = 0;
1146				var vyOffset = 0;
1147				var vdragItem = m;
1148				function vdragStart(e) {
1149					i.vdragging = true; 
1150					vactive = true;
1151					m.addClass('qtmplayer-touch');
1152				}
1153				function vdragEnd(e) {
1154					i.vdragging = false;
1155					vactive = false;
1156					m.removeClass('qtmplayer-touch');
1157				}
1158				function vdrag(e) {
1159					off = c.offset().top - $(window).scrollTop();
1160					if(vactive){
1161						ol = c.offset().top;
1162						w = c.outerHeight();
1163						if (e.type === "touchmove") {
1164							l = off - e.originalEvent.touches[0].pageY;
1165						} else {
1166							l = off - e.clientY;
1167						}
1168						vrelocate(100 - Math.abs(l) );
1169					}
1170
1171
1172				}
1173				function vrelocate(l){
1174					if(l < 0 ){
1175						l = 0;
1176					}
1177					if(l > 95 ){
1178						l = 100;
1179					}
1180					m.css({'top': 100 -l});
1181					p = l;
1182					f.css({'height':p+'%'});
1183					$.qtPlayerObj.uniPlayer.setVolume(p);
1184
1185					$('[data-proradio-volumeslider]').val(p)
1186
1187					var vi = $('[data-qtmplayer-vicon]');
1188					if(p > 1){
1189						if(p < 50){
1190							vi.html('volume_down');
1191						} else {
1192							vi.html('volume_up');
1193						}
1194					} else {
1195						vi.html('volume_off');
1196					}
1197				}
1198				$('body').on('click','[data-qtmplayer-vicon]', function(e){
1199					e.preventDefault();
1200					
1201					if(p > 1){
1202						tp = p;
1203						vrelocate(0);
1204					} else {
1205						vrelocate(tp);
1206					}
1207					e.stopPropagation();
1208				});
1209				// Boot setup start volume
1210				var mvol = $.qtPlayerObj.masterVolume;
1211				if(mvol !== 100){					
1212					$.qtPlayerObj.uniPlayer.setVolume( mvol );
1213					vrelocate(mvol);
1214				}
1215			},
1216			setDuration: function(text){
1217				if(text === 'NaN:NaN' || text === '00:00'){
1218					$("#qtmplayerDuration").html();
1219					return;
1220				}
1221				$("#qtmplayerDuration").html(text);
1222			},
1223			bufferStart: function(){
1224				
1225				$("#qtmplayerDuration").html('...');
1226				$("#qtmplayer-buffer").show();
1227				$('#qtMplayerMiniCue,  #qtMplayerTadv').animate({'opacity':1}, 'fast' ).css({'pointer-events': 'none'});
1228			},
1229			bufferEnd: function(){
1230				$("#qtmplayer-buffer").hide();
1231				var returnAlive = setTimeout(function(){
1232					$('#qtMplayerMiniCue, #qtMplayerTadv').css({'pointer-events': 'all'});
1233				}, 300);
1234				
1235			},
1236			screenResize: function(){
1237				var resizeTimer,
1238					o = $.qtPlayerObj,
1239					i = o.interface,
1240					w = i.window,
1241					ww = w.width(),
1242					wh = w.height();
1243				w.on('resize', function() {
1244					clearTimeout(resizeTimer);
1245					resizeTimer = setTimeout(function() {
1246						if (w.width() !== ww || w.height() !== wh) {
1247							i.seekBtn();
1248							$.qtMplayerPlaylistCue.init();
1249						}
1250						
1251					}, 100);
1252				});
1253			},
1254			initializeAudio: function() {
1255				var o = $.qtPlayerObj,
1256				i = o.interface;
1257				i.doSpinner(true);
1258				if(qtAnalyzer){
1259					var hasAudioContext = false;
1260					try {
1261						hasAudioContext = window.AudioContext || window.webkitAudioContext;
1262					} catch(e) {
1263						if($.qtSMPO.init()){
1264							qtInitialized = true;
1265							return true;
1266						};
1267					}
1268					if(hasAudioContext !== false){
1269						o.isSoundApi = true;
1270						if($.qtWebApiPlayer.init()){
1271							qtInitialized = true;
1272							return true;
1273						}
1274					}
1275				} else {
1276					if($.qtSMPO.init()){
1277						qtInitialized = true;
1278						return true;
1279					};
1280				}
1281			},
1282			resumeAudioOld: function(){
1283				var o = $.qtPlayerObj,
1284					i = o.interface;
1285				i.initializeAudio(); // Appply new fixes
1286				qtPlayIsAllowed = true;
1287				if(i.autoplay){
1288					setTimeout(
1289						o.uniPlayer.play, 
1290						2200
1291					);
1292					
1293				}
1294				document.removeEventListener("click", i.resumeAudio);
1295			},
1296			resumeAudio: function(){
1297				// this seems to break the player by creating sometimes a parallel audio instance
1298				// return;
1299
1300				var o = $.qtPlayerObj,
1301					i = o.interface;
1302				i.log("resumeAudio A");
1303				i.initializeAudio(); // Appply new fixes
1304				qtPlayIsAllowed = true;
1305				if(i.autoplay){
1306					i.log("resumeAudio B");
1307					setTimeout(
1308						function(){ 
1309							i.btnPlay.click(); 
1310							i.log("resumeAudio A1");
1311							setTimeout(
1312								function(){ 
1313									i.log("resumeAudio AB");
1314									if(false === i.isMobile()){
1315										i.log("resumeAudio AB 0");
1316									} else {
1317										i.btnPlay.click();
1318										i.log("resumeAudio AB 1");
1319									}
1320								},
1321								10
1322							);
1323						},
1324						2200
1325					);					
1326				}
1327				i.log("resumeAudio C");
1328				document.removeEventListener("click", i.resumeAudio);
1329			
1330
1331			},
1332			triucco: function(){
1333				var b = $('body'),
1334					i = $.qtPlayerObj.interface,
1335					t; 
1336				$('#qtmusicplayer').addClass('qt-mplayer-mobile');
1337				i.initializeAudio(); 
1338				i.resumeAudio();
1339				b.addClass("qt-mplayer-enabled");
1340				i.log('mobile player enabled');
1341				setTimeout(
1342					function(){
1343						i.doSpinner();
1344					}, 
1345					1200
1346				);
1347				
1348			},
1349			log: function(m){
1350				var c = $("#qtmPlayerDebugger");
1351				if(c.length > 0){
1352					c.append(m+'<br>');
1353				}
1354			},
1355
1356		},
1357		initPlayer: function(){
1358			if(qtPlayDebug){
1359				$('#qtmplayer-playlist').append('<div class="qtmplayer__debugger" id="qtmPlayerDebugger"><h5>Player Debug</h5></div>');
1360			}
1361			if($('.qtmplayer__controllayer_noky').length > 0){
1362				$('.qtmplayer__controllayer_noky').animate({opacity: 0.6},2000);
1363				return;
1364			}
1365			var o = $.qtPlayerObj,
1366				i = o.interface,
1367				c = i.controls,
1368				b = i.body,
1369				ot; 
1370			o.songdata = {};
1371			b.addClass("qtmplayer-enabled");
1372			$(document).on("click", "[data-playlistopen]", function(){
1373				b.toggleClass("qtmplayer-openplaylist");
1374			});
1375			b.on("click", "[data-playeropen]", function(){
1376				b.toggleClass("qtmplayer-open");
1377			});
1378			c.find('.qtmplayer__cover').html('<img src="">');
1379			i.qtmplayer.find('.qtmplayer__album').prepend('<img src="">');
1380
1381			if( qtMplayerisMobile ){
1382				i.triucco();
1383
1384			} 	else {
1385				b.addClass("qt-mplayer-enabled");
1386			}
1387
1388			i.preloadTrack(false);
1389			i.prevNext();
1390			i.appendAlbum();
1391			i.seekBtn();
1392			i.volBtn();
1393			i.bufferEnd();
1394			i.skipCue();
1395			i.screenResize();
1396			c.mouseenter(function(){
1397				c.addClass('open');
1398				i.seekBtn();
1399				clearTimeout(ot);
1400			}).mouseleave(function(){				
1401				ot = setTimeout(function() {
1402					c.removeClass('open');
1403				}, c.data('hidetimeout'));
1404			});
1405
1406			$('body').one('click', function(e) {
1407
1408				if(  $(window).width() >= 1280 ){
1409					
1410					
1411					// console.log('Autoplay test2');
1412					var target = $(e.target).closest('a');
1413					if(target){
1414						// not('.qtmplayer__play, .qtmplayer-play, .proradio-btn--playmenu')
1415						if(target.hasClass('qtmplayer__play') || target.hasClass('qtmplayer-play') || target.hasClass('proradio-btn--playmenu')){
1416							return;
1417						}
1418					}
1419					var closest = $(e.target).closest('a');
1420					if(closest){
1421						if(closest.hasClass('qtmplayer__play') || closest.hasClass('qtmplayer-play') || closest.hasClass('proradio-btn--playmenu')){
1422						 		return;
1423						}
1424					}
1425					// console.log( $(e.target).closest('a').attr('class') );
1426					if( $.qtPlayerObj.hasDoneAutoplay === false && $.qtPlayerObj.interface.autoplay ){
1427					    setTimeout(function(){
1428					    	console.log('%c Pro.Radio player - do Autoplay! ', 'background: #030303; color: #bada55');
1429					    	$('#qtmplayerPlay').click();
1430					    	$.qtPlayerObj.hasDoneAutoplay = false;
1431					    }, 500);
1432					}
1433				}
1434			});
1435
1436			$('body').on('change', '[data-proradio-volumeslider]', function() {
1437				let mvol = $(this).val();
1438				$.qtPlayerObj.uniPlayer.setVolume( mvol );
1439
1440				$("[data-qtmplayer-vball]").css({'top': 100 - mvol});
1441				$("[data-qtmplayer-vfill]").css({'height':mvol+'%'});
1442			});
1443			$('[data-proradio-volumeslider]').val( $.qtPlayerObj.masterVolume );
1444			
1445
1446			window.onresize = function(){
1447			    if($('body').hasClass('qtmplayer--page-popup')){
1448			    	window.resizeTo(380,560);
1449			    }
1450			}
1451		},
1452	};
1453
1454
1455	$(window).on('qtAjaxpageLoadEnd', function(){
1456		// If player is paused and we open a channel page, load the channel first
1457		if( $('.proradio-infoajax') ){
1458			if( $('.proradio-infoajax').data('proradio-posttype') == 'radiochannel' ){
1459				var pageId =  $('.proradio-infoajax').data('proradio-pageid');
1460				if( $.qtPlayerObj.playing == false ){
1461					if( $('*[data-qtmplayer-qtmpid="'+ pageId +'"]') ){
1462						$('*[data-qtmplayer-qtmpid="'+ pageId +'"]').click();
1463					}
1464				}
1465			}
1466		}
1467		// set volume 
1468		$('[data-proradio-volumeslider]').val( $.qtPlayerObj.masterVolume );
1469	});
1470
1471
1472	$(document).ready(function() {
1473		if(0 === $('#qtmplayer-playlist li').length ){
1474			return;
1475		}
1476		
1477		$.qtPlayerObj.initPlayer();
1478	});
1479
1480
1481
1482
1483})(jQuery);
1484
1485
1486
1487

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.