PageSourceSearch

https://philspector.com/wp-content/themes/philspector/assets/js/jukebox.js

js philspector.com collected 2026-09-24 18:59:41 UTC 6,182 bytes, 143 lines download raw bytes

1jQuery(document).ready(function($) {
2    if ( $('#jukebox').length ) {
3
4            // // players config
5            var playlist = [];
6            var tracks = [];
7            $('#jukebox .playlist').each(function(){
8               var a =  {
9                        title :  $(this).data('title'),
10                        image :  $(this).data('thumb'),
11                        album :  $(this).data('album'),
12                        albumlink :  $(this).data('album-link'),
13                        buy :  $(this).data('buy')
14                    };
15
16                playlist.push(a);
17            });
18            $('#jukebox .playlist .track').each(function(){
19               var b =  {
20                        associatedAlbum :  $(this).parent().data('album'),
21                        url : $(this).data('media'),
22                        track :  $(this).data('track'),
23                        trackNum :  $(this).data('track-no')
24                    };
25                tracks[$(this).data('track-no')] = b;
26            });
27            var aud = $('#audioplayer').get(0);
28            aud.pos = -1;
29
30            if ( $('.playlist .track').length > 0 ) {
31
32            // top player functions
33            $('#jukebox .play').bind('click', function(evt) {
34                evt.preventDefault();
35                if (aud.pos < 0) {
36                    $('#jukebox .next').trigger('click');
37                } else {
38                    aud.play();
39                }
40            });
41
42            $('#jukebox .pause').bind('click', function(evt) {
43                evt.preventDefault();
44                aud.pause();
45            });
46
47            $('#jukebox .next').bind('click', function(evt) {
48                evt.preventDefault();
49                if (aud.pos >= 0) {
50                    $('#jukebox').carousel('next');
51                }
52                aud.pause();
53                aud.pos++;
54                if (aud.pos == tracks.length) aud.pos = 0;
55                aud.setAttribute('src', tracks[aud.pos].url);
56                if ( $('#audioplayer').attr('data-playing') != tracks[aud.pos].trackNum ) {
57                    $('#audioplayer').attr('data-playing', tracks[aud.pos].trackNum);
58                    $('#jukebox .info a').attr('href', playlist[0].albumlink).text(playlist[0].title);
59                    if ( playlist[0].buy === true ) {
60                        $('#jukebox .buy-link').html($('.playlist[data-album='+playlist[0].album+'] div.hidden').html());
61                    } else {
62                        $('#jukebox .buy-link').html('');
63                    }
64                    $('#jukebox .marquee').html(tracks[aud.pos].track).marquee({gap:5,duplicated: true});
65                }
66                $('#jukebox .music-thumb img').attr('src', playlist[0].image);
67                aud.load();
68                aud.play();
69            });
70
71            $('#jukebox .prev').bind('click', function(evt) {
72                evt.preventDefault();
73                aud.pause();
74                aud.pos--;
75                $('#jukebox').carousel('prev');
76                if (aud.pos < 0) aud.pos = tracks.length - 1;
77                aud.setAttribute('src', tracks[aud.pos].url);
78                if ( $('#audioplayer').attr('data-playing') != tracks[aud.pos].trackNum ) {
79                    $('#audioplayer').attr('data-playing', tracks[aud.pos].trackNum);
80                    $('#jukebox .info a').attr('href', playlist[0].albumlink).text(playlist[0].title);
81                    if ( playlist[0].buy === true ) {
82                        $('#jukebox .buy-link').html($('.playlist[data-album='+playlist[0].album+'] div.hidden').html());
83                    } else {
84                        $('#jukebox .buy-link').html('');
85                    }
86                    $('#jukebox .marquee').html(tracks[aud.pos].track).marquee({gap:5,duplicated: true});
87                }
88                $('#jukebox .music-thumb img').attr('src', playlist[0].image);
89                aud.load();
90                aud.play();
91            });
92            aud.addEventListener('progress', function(evt) {
93                    var width = parseInt($('#jukebox .loader').css('width'), 10);
94                    var percentLoaded = Math.round(evt.loaded / evt.total * 100);
95                    var barWidth = Math.ceil(percentLoaded * (width / 100));
96                    $('#jukebox .load-progress').css( 'width', barWidth );
97
98            });
99
100            aud.addEventListener('timeupdate', function(evt) {
101                var width = parseInt($('#jukebox .loader').css('width'), 10);
102                    var percentPlayed = Math.round(aud.currentTime / aud.duration * 100);
103                    var barWidth = Math.ceil(percentPlayed * (width / 100));
104                    $('#jukebox .play-progress').css( 'width', barWidth);
105            });
106
107            aud.addEventListener('play', function(evt) {
108                $('#jukebox .play').addClass('hidden');
109                $('#jukebox .pause').removeClass('hidden');
110            });
111
112            aud.addEventListener('pause', function(evt) {
113                $('#jukebox .play').removeClass('hidden');
114                $('#jukebox .pause').addClass('hidden');
115            });
116
117            aud.addEventListener('canplay', function(evt) {
118                $('#jukebox .play').trigger('click');
119            });
120
121            aud.addEventListener('ended', function(evt) {
122                $('#jukebox .next').trigger('click');
123            });
124
125            //init load if tracks
126            $('#audioplayer').attr('data-playing', tracks[0].trackNum);
127            $('#jukebox .marquee').html(tracks[0].track).marquee({gap:5,duplicated: true});
128
129
130        } else {
131            $('.track-feed').hide();
132        }
133            
134            //init load
135            $('#jukebox .info a').attr('href', playlist[0].albumlink).text(playlist[0].title);
136            $('#jukebox .music-thumb img').attr('src', playlist[0].image);
137            if ( playlist[0].buy === true ) {
138                $('#jukebox .buy-link').html($('.playlist[data-album='+playlist[0].album+'] div.hidden').html());
139            } else {
140                $('#jukebox .buy-link').html('');
141            }
142        }
143});

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.