Fixups for Sting
[songbook.git] / web / songbook.js
1 // Javascript functions for controlling audio
2 starttime = null;
3 endtime   = null;
4
5 // Keycodes
6 spacebar       = 32;
7 leftarrow      = 37;
8 uparrow        = 38;
9 rightarrow     = 39;
10 downarrow      = 40;
11 seta           = 65;
12 backfewsecs    = 66;
13 cleara         = 67;
14 forwardfewsecs = 70;
15 return2start   = 82;
16
17 howmanysecs    = 10;
18
19 window.onload = function() {
20   song = document.getElementById('song');
21
22   starttime = song.currentTime;
23   endtime   = song.duration;
24   body      = document.getElementsByTagName('body')[0]
25
26   body.onkeydown = 
27     function(e) {
28       var ev = e || event;
29       if (ev.keyCode == spacebar) {
30         if (song.paused) {
31           playing = false;
32         } else {
33           playing = true;
34         } // if
35
36         if (playing) {
37           song.pause();
38           playing = false;
39         } else {
40           if (starttime != 0) {
41             song.currentTime = starttime
42           } // if
43
44           song.play();
45           playing = true;
46         } // if
47
48         e.preventDefault();
49         return;
50       } else if (ev.keyCode == return2start || ev.keyCode == uparrow) {
51         if (starttime != null) {
52           song.currentTime = starttime;
53         } else {
54           song.currentTime = 0;
55         } // if
56
57         return;
58       } else if (ev.keyCode == backfewsecs || ev.keyCode == leftarrow) {
59         song.currentTime -= howmanysecs;
60         song.play()
61
62         return;
63       } else if (ev.keyCode == forwardfewsecs || ev.keyCode == rightarrow) {
64         song.currentTime += howmanysecs;
65         song.play();
66
67         return;
68       } else if (ev.keyCode == seta) {
69         starttime = song.currentTime;
70
71         return;
72       } else if (ev.keyCode == cleara) {
73         starttime = 0;
74
75         return;
76       } // if
77     } // function
78   }  // getElementByTagName