diff --git a/public/BetaHaven.html b/public/BetaHaven.html index 66cc8c6..160a9f9 100644 --- a/public/BetaHaven.html +++ b/public/BetaHaven.html @@ -21,7 +21,7 @@
- +
Jet — Black Hearts
@@ -31,6 +31,7 @@
+
@@ -53,7 +54,7 @@ diff --git a/public/javascripts/audio.js b/public/javascripts/audio.js index e836704..876bc5b 100644 --- a/public/javascripts/audio.js +++ b/public/javascripts/audio.js @@ -3,20 +3,39 @@ var Audio = { audio: null, tid: null, - init: function() { - this.audio = document.getElementById('a'); - }, - play: function() { - this.audio.play(); + try { + this.audio.play(); + } catch(e) {} }, pause: function() { - this.audio.pause(); + try { + this.audio.pause(); + } catch(e) {} }, - setTrack: function(url) { - this.audio.setAttribute('src', url); + rewind: function() { + try { + this.audio.currentTime = 0; + } catch(e) {} + }, + + addTrack: function(id, url) { + if ($('#a'+ id).length == 0) { + $('#audiobox').append('') + } + }, + + setTrack: function(id) { + this.audio = document.getElementById('a'+ id); + $(this.audio).bind('play',function() { + $('#player .controls .play').hide(); + $('#player .controls .pause').show(); + }).bind('pause ended', function() { + $('#player .controls .pause').hide(); + $('#player .controls .play').show(); + }); }, getLoadedPercent: function() { @@ -47,5 +66,17 @@ var Audio = { Audio.getLoadedPercent(), Audio.getPlayedPercent() ); + }, + + killListener: function() { + window.clearTimeout(this.tid); } -} \ No newline at end of file +} + +$('#player .controls .play').live('click', function(){ + Audio.play(); +}); + +$('#player .controls .pause').live('click', function(){ + Audio.pause(); +}); \ No newline at end of file diff --git a/public/javascripts/player.js b/public/javascripts/player.js index e181d1d..9438275 100644 --- a/public/javascripts/player.js +++ b/public/javascripts/player.js @@ -18,29 +18,70 @@ var Player = { }, setTrack: function(obj) { - var id = $(obj).attr('id'); + if (typeof obj == 'string') { + var id = obj; + obj = $('#i'+ obj); + } else { + var id = $(obj).attr('id').split('i')[1]; + } var query = $(obj).find('.title').html(); var length = $(obj).find('.duration').html(); $('#player .now-playing').html(query); $('.playlist-tracks li').removeClass('now'); - $('#'+ id).addClass('now'); + $('#i'+ id).addClass('now'); loadTracksData(query, this.playSource); }, playSource: function(url) { - Audio.setTrack(url); + var id = $('.playlist-tracks .now').attr('id').split('i')[1]; + Audio.pause(); + Audio.rewind(); + Audio.addTrack(id, url); + Audio.setTrack(id); Audio.play(); Audio.startListener(); }, + nextTrack: function() { + if (true) { // Shuffle off + if ($('.playlist-tracks .now').next().length == 0 && true) { // Last track in the playlist and repeat is on + return $('.playlist-tracks li').first().attr('id').split('i')[1]; + } else { + return $('.playlist-tracks .now').next().attr('id').split('i')[1]; + } + } + }, + + prevTrack: function() { + if (true) { // Shuffle off + if ($('.playlist-tracks .now').prev().length == 0 && true) { // First track in the playlist + return $('.playlist-tracks li').last().attr('id').split('i')[1]; + } else { + return $('.playlist-tracks .now').prev().attr('id').split('i')[1]; + } + } + }, + updateUI: function(buffered, played) { $('#player .loaded').width(Math.round(buffered * this.bar_width)); $('#player .played').width(Math.round(played * this.bar_width)); + if (played == 1) { + Audio.killListener(); + this.setTrack(this.nextTrack()); + } } } +$('#player .controls .prev').live('click', function(){ + Player.setTrack(Player.prevTrack()); +}); + +$('#player .controls .next').live('click', function(){ + Player.setTrack(Player.nextTrack()); +}); + $('.add-album').live('click', function() { var artist = $('.artist-info .name').html(); $(this).parent().parent().parent().find('.tracklist li').each(function(i, item){ @@ -66,8 +107,4 @@ $('.tracklist li').live('mouseover mouseout', function(e){ $('.playlist-tracks li').live('dblclick', function(){ Player.setTrack(this); -}); - -$(function(){ - Audio.init(); }); \ No newline at end of file diff --git a/public/stylesheets/player.css b/public/stylesheets/player.css index dc3ddc3..13afd8a 100644 --- a/public/stylesheets/player.css +++ b/public/stylesheets/player.css @@ -41,6 +41,10 @@ #player .controls .play { background-image: url('/images/icns/play.png'); } + #player .controls .pause { + background-image: url('/images/icns/pause.png'); + display: none; + } #player .controls .next { background-image: url('/images/icns/next.png'); }