summaryrefslogtreecommitdiff
path: root/static/sound.js
diff options
context:
space:
mode:
Diffstat (limited to 'static/sound.js')
-rw-r--r--static/sound.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/static/sound.js b/static/sound.js
new file mode 100644
index 0000000..252741c
--- /dev/null
+++ b/static/sound.js
@@ -0,0 +1,53 @@
+function playsound(model) {
+ var item = model.toJSON();
+ var id = item.id;
+ var cid = model.cid;
+ var el = $('#cid-' + cid);
+ el.addClass('loading');
+ if(sound) {
+ sound.stop();
+ sound.destruct();
+ }
+ sound = soundManager.createSound({
+ id: 'audio',
+ url: '/track/' + item.id,
+ whileloading: function() {
+ $('#status').text('Loading... ' + this.bytesLoaded);
+ el.addClass('loading');
+ },
+ onload: function(success) {
+ el.removeClass('loading').removeClass('nocache');
+ slider = $('#progress').slider({
+ max: sound.duration,
+ slide: function(event, ui) {
+ if(event.originalEvent)
+ sound.setPosition(ui.value);
+ }
+ });
+ },
+ whileplaying: function() {
+ $('#progress').slider("value", sound.position);
+ //$('#' + id).addClass('playing');
+ //$('#playlist-' + id).addClass('playing');
+ var seconds = (this.position / 1000).toFixed(0);
+ var minutes = Math.floor(seconds / 60).toFixed(0);
+ seconds %= 60;
+ if(seconds < 10)
+ seconds = '0' + seconds;
+ var pos = minutes + ':' + seconds;
+ $('#status').text(pos);
+ },
+ onstop: function() {
+ $('#' + id).removeClass('playing');
+ },
+ onfinish: function() {
+ $('#' + id).removeClass('playing');
+ var next = playlist.next();
+ if(next) {
+ playsound(next, $('#cid-' + next.cid));
+ }
+ }
+ });
+ sound.play();
+ $('#cid-' + cid).addClass('playing');
+}