-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
607 lines (536 loc) · 54.2 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
<!DOCTYPE>
<html manifest="ioseven.manifest">
<head>
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=0"/>
<link rel="apple-touch-icon-precomposed" href="icon.png" />
<title>Seven</title>
<style type="text/css">
/* icon from Jacob Halton at The Noun Project http://thenounproject.com/noun/doughnut/#icon-No4118 */
/* http://colorschemedesigner.com/#5a61Tw0w0w0w0 */
/* http://colorschemedesigner.com/#0r61Tw0w0w0w0 */
/* http://freesound.org/people/jorickhoofd/sounds/160052/ */
/* http://freesound.org/people/CJ4096/sounds/66717/ */
@font-face {
font-family:'Quicksand';
src: url('Quicksand-Regular.ttf');
}
body {
font-family:'Quicksand', sans-serif;
margin:0;
padding:0;
font-size:10em;
color:#ecf0f1; /* clouds */
overflow:hidden;
}
.button {
width:250px;
height:250px;
line-height:250px;
text-align:center;
}
.start .button {
border-radius:50%;
border:6px solid #ecf0f1;
}
#main {
position:relative;
width:100%;
height:100%;
display: -webkit-box;
-webkit-box-pack: center;
-webkit-box-align: center;
-webkit-box-orient: vertical;
display: -moz-box;
-moz-box-pack: center;
-moz-box-align: center;
-moz-box-orient: vertical;
display: box;
box-pack: center;
box-align: center;
box-orient: vertical;
transition:background-color 100ms;
}
.start {
background-color:#d60062;
}
.run {
background-color:#34cfbe;
}
.fin {
background-color:#9702a7;
}
.rest {
background-color:#f00;
}
#timer {
-webkit-transform:translatez(0);
-moz-transform:translatez(0);
-ms-transform:translatez(0);
-o-transform:translatez(0);
transform:translatez(0);
}
.start #timer:hover {
cursor:pointer;
-webkit-animation-duration:600ms;
-webkit-animation-name:pulse;
-moz-animation-duration:600ms;
-moz-animation-name:pulse;
-ms-animation-duration:600ms;
-ms-animation-name:pulse;
-o-animation-duration:600ms;
-o-animation-name:pulse;
-webkit-animation-duration:600ms;
-webkit-animation-name:pulse;
}
/* {{ pulse frames */
@-webkit-keyframes pulse {
from {
width:250px;
height:250px;
line-height:250px;
}
50% {
width:300px;
height:300px;
line-height:300px;
}
to {
width:250px;
height:250px;
line-height:250px;
}
}
@-ms-keyframes pulse {
from {
width:250px;
height:250px;
line-height:250px;
}
50% {
width:300px;
height:300px;
line-height:300px;
}
to {
width:250px;
height:250px;
line-height:250px;
}
}
@-moz-keyframes pulse {
from {
width:250px;
height:250px;
line-height:250px;
}
50% {
width:300px;
height:300px;
line-height:300px;
}
to {
width:250px;
height:250px;
line-height:250px;
}
}
@-o-keyframes pulse {
from {
width:250px;
height:250px;
line-height:250px;
}
50% {
width:300px;
height:300px;
line-height:300px;
}
to {
width:250px;
height:250px;
line-height:250px;
}
}
@keyframes pulse {
from {
width:250px;
height:250px;
line-height:250px;
}
50% {
width:300px;
height:300px;
line-height:300px;
}
to {
width:250px;
height:250px;
line-height:250px;
}
}
/* pulse frames }} */
.cellContainer {
list-style-type:none;
position:absolute;
bottom:0;
width:100%;
height:5%;
margin:0;
padding:0;
display: -moz-box;
display: -webkit-box;
display:box;
-moz-box-orient:horizontal;
-webkit-box-orient:horizontal;
box-orient:horizontal;
-moz-box-flex:1;
-moz-box-flex:1;
box-flex:1;
-moz-box-align:stretch;
-webkit-box-align:stretch;
box-align:stretch;
overflow:hidden;
}
.cell {
width:8.3333%;
transition:background-color 100ms;
}
.cell:last-child {
width:11%;
}
.run .cell {
background-color:#009e8e;
}
.run .inprogress {
background-color:#34cfbe;
}
.rest .cell {
background-color:#a60000;
}
.rest .inprogress {
background-color:#f00;
}
#line1, #line2 {
font-size:.4em;
text-align:center;
}
</style>
</head>
<body>
<div id="main" class="start">
<div id="line1"></div>
<div id="line2"></div>
<div class="button" id="timer">...</div>
<ul class="cellContainer">
<li id="cell0" class="cell"></li>
<li id="cell1" class="cell"></li>
<li id="cell2" class="cell"></li>
<li id="cell3" class="cell"></li>
<li id="cell4" class="cell"></li>
<li id="cell5" class="cell"></li>
<li id="cell6" class="cell"></li>
<li id="cell7" class="cell"></li>
<li id="cell8" class="cell"></li>
<li id="cell9" class="cell"></li>
<li id="cell10" class="cell"></li>
<li id="cell11" class="cell"></li>
</ul>
</div>
<script>
window.onload = function() {
// {{
/*
Copyright (c) 2011, Daniel Guerrero
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL DANIEL GUERRERO BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Uses the new array typed in javascript to binary base64 encode/decode
* at the moment just decodes a binary base64 encoded
* into either an ArrayBuffer (decodeArrayBuffer)
* or into an Uint8Array (decode)
*
* References:
* https://developer.mozilla.org/en/JavaScript_typed_arrays/ArrayBuffer
* https://developer.mozilla.org/en/JavaScript_typed_arrays/Uint8Array
*/
var Base64Binary = {
_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
/* will return a Uint8Array type */
decodeArrayBuffer: function(input) {
var bytes = (input.length/4) * 3;
var ab = new ArrayBuffer(bytes);
this.decode(input, ab);
return ab;
},
decode: function(input, arrayBuffer) {
//get last chars to see if are valid
var lkey1 = this._keyStr.indexOf(input.charAt(input.length-1));
var lkey2 = this._keyStr.indexOf(input.charAt(input.length-2));
var bytes = (input.length/4) * 3;
if (lkey1 == 64) bytes--; //padding chars, so skip
if (lkey2 == 64) bytes--; //padding chars, so skip
var uarray;
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
var j = 0;
if (arrayBuffer)
uarray = new Uint8Array(arrayBuffer);
else
uarray = new Uint8Array(bytes);
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
for (i=0; i<bytes; i+=3) {
//get the 3 octects in 4 ascii chars
enc1 = this._keyStr.indexOf(input.charAt(j++));
enc2 = this._keyStr.indexOf(input.charAt(j++));
enc3 = this._keyStr.indexOf(input.charAt(j++));
enc4 = this._keyStr.indexOf(input.charAt(j++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
uarray[i] = chr1;
if (enc3 != 64) uarray[i+1] = chr2;
if (enc4 != 64) uarray[i+2] = chr3;
}
return uarray;
}
}
// }}
var mode = 'start',
unlockSound = false,
timerNode = document.getElementById('timer'),
mainNode = document.getElementById('main'),
line1Node = document.getElementById('line1'),
line2Node = document.getElementById('line2'),
cellNodes = [
document.getElementById('cell0'),
document.getElementById('cell1'),
document.getElementById('cell2'),
document.getElementById('cell3'),
document.getElementById('cell4'),
document.getElementById('cell5'),
document.getElementById('cell6'),
document.getElementById('cell7'),
document.getElementById('cell8'),
document.getElementById('cell9'),
document.getElementById('cell10'),
document.getElementById('cell11')
],
config = [
{line1:'Jumping', line2:'Jacks'},
{line1:'Wall', line2:'Sit'},
{line1:'Push', line2:'Up'},
{line1:'Ab', line2:'Crunch'},
{line1:'Chair', line2:'Step', switch:1},
{line1:'Squat'},
{line1:'Triceps', line2:'Dip'},
{line1:'Plank'},
{line1:'Knees', line2:'Running'},
{line1:'Lunge', switch:1},
{line1:'Push Up', line2:'Rotation', switch:1},
{line1:'Side', line2:'Plank', switch:1}
],
configLength = config.length,
curr,
currSwitch,
currIndex = 0,
cellClass = 'cell',
inprogressClasses = 'cell inprogress',
oneSecond = 1000,
webAudio = window.AudioContext || window.webkitAudioContext,
context = webAudio ? new webAudio : null,
contextDestination = context ? context.destination : null,
// [0] = tick, [1] = ding, [2] = switch
soundFiles = [
'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CgAFAAAAAgAEAAAABwADAAcAAwAFAAIA+//9//n/+v/5/wEA///7//j/AgAEAP3///8BAP//9P///wEAAQD6//n/+f/w//X/8P/6//D/7f/w//H/5P/m/+z/6f/p/+b/3P/m/+v/8f/q/+//6//u/+z/7P/u/+n/5f/m/9//3//n/+3/3v/k/+7/5//2//X//v/9//X/9//v//P/5//u/+j/9f/2/wEA+f/u//r/8f/v//T/7f/5////9//4//T/+v/5/wQACgACAAQACgALABMACwAUAAsADAADAAwABAACAAMAEwAKAAAABAABAPn/GAAEAAEAAQAAABIABAD9/xIAAAAMAAkAAwAAAAwACQADABgACQAAAAMAGAAYAAwACQASAAAAAwADAAAACQAJABgACQD9/wwAAAADAAMAAAAMAP3/AAAAAAkAAwD3//f/CQADAAwACQAMAP3/AwD3/wAAAAADAAwADAAAAAkADAASABIADAASABgAEgAJAAAAEgASAAMAAAAJAAkAGAADAAkAAwAJAAwACQD3//T/AwD3//3//f8DAAkA7v8AAAkAAwD3/wAAAwASAAkAAwAJAAMAAwAJABIACQAAAP3//f8MABIAAwASAAwA/f8AAPf/AAAJAAwACQAAAP3/AAAAAPf/CQAJAPT/AAAAAAAA/f/3/wAA/f/9//3/AwD3//T/9//9//T/6P/0//T/9//0/+7/9//u/wMA/f/3/+j/7v/3//3//f/9//T//f/3/wAAAwD9//3//f8DAPT/AAD0//f/7v/u//f/5f/3/wAA/f/0//3/AADu/+7/AAD3/wMA9/8JAAkAAwD9//3/9P8MAP3//f8AAP3//f/9//f/9//3//3/9//u//f/7v/0//T/5f/l//f//f/0//f/9//3//f/9P/9//T/7v/9//3/CQAJAPf/AAAMAAkAAAASAAMAEgD9/wMACQADABIADAAbAAkAGAAbABgA9/8YABsADAAYACIAIgAYAAkAGwAYABIADAAMAAwAAwADAAAAAwAJAAAAAwASAAAADAAMABIAAAADAAwAAwAAAAwAAAAMAP3/AAD3//3/CQADAAAA9/8AAAAA/f/9//3/9/8JAAAA/f8DAAMAAAD9/wAAAAAAAPf//f/9//f/AAD0/wAA9//u//T/9//3/wAA9P/3//3/9P/3//f//f/u/wAA/f/9/wAAAwAJAAAA9/8DAP3/9//0//3/9//3//3/AwADAAAAAAD3/wAA9P/3/wAA9//3//T/7v8JAAAAAwAAAAAAAwD9/wMAAAADAAAAAAADAAwA/f8AAAAADAAAAPf/AwASAAwADAAMAAkAAAADAAAA/f8MABIAEgAJAAkA/f/9/wkA/f8AAAMA6P/0//f/9/8AAPf//f/3/wAAAAAAAAMAAwD9//f/AAAAAAMA/f/9//3/CQADAAkA7v8AAAwACQD9/xIAAwAJABgADAADAAMAAwAJAP3/AwD3/wkAAAASAAMAAAAAAAMADAADAAkADAADABsAAAAJAAAA/f/3/wwAAwADAAAADAAAAP3/DAAAAPf/9P8DAPf/9//o/+j//f/o//T/9P/0/wAA9/8DAAAA9P/9//f/9//o/+7/7v/u//T/9P/t//z//P/8//7/7P/2/wIA9//z//P/+v8AAP3/+v/1//r/9f8AAP3/+//9//T/AQADAAcA8//+/wAA+P8EAAcABgD9/wAABgAFAAcABwANAAMADgAGAAYAAgAFAAEA+//7/wMACQD///7/AwAKAAgABwD8/wMABAD4//v/AwACAAQABgAIAAYA/v/1//r/9//4//j/AAD3//X/AAADAP3/BgD5/wYAAwAGAAAA/P/7//L/9v8HAAIABQABAAAA+//9/wIA+/////3/AQAGAAEABAD7////BwD7//v/9P/9/wAAAQABAAQAAgADAP7//f8GAPz/FQALABMAGAANABkAAQAHABcAGgAaACsAGQAMACMAHAAaABQAGgAOAAQACQAKAAkAAQD4/wAA/v/r//L/AADx//H/6v/3/+H/8f/h/9r/2v/3//H//f8JAAMACQAJAA8AAwAWAA8AMgAfAB8AHwAfACYAHAAAABYAAAAcAAkAAAADAP3/AAAJAPf/AAD9/+r/8f/a/9r/6v/3/9T/4f/U/+H/4f/h/9T/1P/a/9T/6v/x//f/8f/3//H/AAD3/wkAAAADAAAAAwAJAAAAHAAAAAAAAwD9/wkA8f/9/+T/6v/a/9T/2v/x//H//f8PAAMAFgAfABYAFgAPACYAFgAWAB8AMgAfACwAOQBCAEIALAA5AB8AHwAyAB8AJgAyACwAHwAfAA8AHwAcAAAAAwAPAAAAAAADAP3/8f8DAAMAFgAsACYA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DAASAAYADAAAACwAHwAlACwAJQASABkAGQAlADgAGQAlABkAEgAAAPr/9P/h/9v/1P/U/+7/yP+7/67/u/+1/7X/u/+1/7X/wf+7/9v/1P/U/87/1P/h/9v/7v/h/+f/4f/0/+7/BgASACwAHwAZABkALAAsACUAMgBFADgASwBFADIAOAAyACwAJQAsABkAJQAyABkAEgAlAAwAEgAAAAAABgASAAwADAAGABkADAAMAAwAEgAfABkAEgAfABkALAAfABkAJQA4AB8AMgAsACwAJQASABkAJQAMAAYADAAGABIAAAAMAAYAHwAGABIAGQAGAAwALAASABIAGQAlAAwAHwASACwAMgAfACwAJQASABkADAASABIAEgASABIADAAAAAwA+v/6//T/+v8AAAwABgDu//r/5//6/+f/4f/u/9T/4f/U/9T/wf+7/6L/qP+b/7X/m/+b/4L/lf+V/4//j/+b/6L/ov+u/6L/qP+7/7v/tf+7/7X/wf/B/9T/2//b/+H/2//u//r/9P/0//r/+v/6/+f/7v8AAAYADAAGAAwADAD0/xkAEgAZABkAJQAyACwAHwAlAD8ALAAyAEUAMgBSAF4ASwA/AF4AXgBSAFIAXgBYAEsARQBFAD8ARQBeAEsAUgBrAFIASwBLAFIAPwA/ACwAJQAyABkAEgAMAAAADAAMAAAA9P/0/+7/7v/0/+7/+v/U/9v/1P/b/9T/yP/U/9v/4f/B/8j/4f/O/9T/4f/U/9T/4f/U/+H/4f/O/87/4f/n/+f/2//O/9T/4f/b/9T/2//h/87/zv/U/87/1P/b/+H/4f/0//T/+v/6//T/7v/6//r/9P8AAAAA9P/0/wYAAAAGABIAEgASABkAHwASABIAEgAfAAwADAAZABkAHwASACwAGQAZABIAGQAZABIABgAMABIAAAAfACUAEgAMAAAADAAZABIAGQAMABIAEgAMABIAAAAMAAYA+v8fAAYADAAMABkAGQAGAB8ADAAZAB8ADAAMAAwAGQAMABIABgASABIABgD6/wAABgD6//T/9P/0//T/+v/u/+7/BgAMAPr/AAAGAAYA+v/0//r/DAAGAAAABgAGAAAABgAGAPr/BgAGABIAEgAMAO7/9P/6//r/AAD6/wAAAAD6//r/BgD6//T/AAD0/+7/5//u//T/+v/0//T/4f/n/+f/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5//n/+T/4f/b/+f/5P/b/+H/2//X/9T/1//X/+f/1//b/+T/1P/h/9v/4f/h/+f/7v/b/+H/5//h/9v/4f/k/+f/7v/u//H/5//0//r/9P/0//T/8f/x//T/9P/0//T/9P/6//T/9P/0//T/9P/0//r/9P8DAAYA+v/0//3/BgAAAP3//f8AAAAA/f8AAAMAAAD9//r/AAD9/wAA/f/0//T/+v8DAAMABgAAABIAAAD9//3//f/6/wYAAwAGAAMA8f8AAP3/+v/9//r/+v/n//3/+v8AAO7/9P/6/wMA/f/u//r/BgAGAA8ABgAMAAwABgASAAwADwASAAwA+v8AAAYABgD9/wMAAwAPABIAAwAMAAwABgASABkAHAAcABIADwASAAwAGQASABkAGQAcABIAHAASAA8AHwASABkAEgAMAA8ADAAGAP3/9P8MABkABgAPAA8ADAAZAA8ADAAPAAwADAAGAAMAEgAAAAAADwAGAAYADwASAA8ADAAMAAYADwAMAA8ADwASAAwADwAPAAwADwAPABIAEgAPAAwAHwAZABkAEgADAA8AEgAfABkAHwAfAA8ABgAGAAYADAAMAAwADAADAAYADwASAAYAAwADAAMA/f8DAAAAAAD9//3/AwAAAP3/9P/6//H/5//h/+f/5P/n/9f/2//k/87/1P/h/9f/zv/O/77/wf/O/87/y//L/8v/y//I/9T/y//I/8v/zv/b/9T/y//O/8v/1P/b/9T/1//X/9f/2//h/+f/5P/n//T/5//x/+7/7v/u//3/AAD9/wMADwAGAAwAEgAPAA8AEgAPABkABgASAB8AJQASAB8ALAAfACkADwAcAB8AMgAfAB8AKQAZABIAKQAlACUAJQAPABwAHAAfABkAGQAZABIADwAPAAwABgAMAAMAAAAGAP3/AAAMAAwABgADAAAA+v8AAP3/AAAAAP3/9P/9//3/8f/u//r/8f/x/+7/8f/x//H/+v/x//T/9P/9//T/5P/x//T/9P/u/+7/9P/0//r/+v/0//3/+v/0//T/8f/0//r/+v/x//3//f/0//H/9P/0//3/AAD6//3/9P/9//r//f/6/wMAAwAAAP3/AAAAAAwAAwD9/wAAAwAAAAYABgADAAMAAwAPAAYAAAADAAwAEgASAAYAEgAZABIADAAMABIAGQASABIADwAPAA8AHAASABIAEgAPABIAHwAZAA8AAwASAAwAHAAcABwAEgAMABwAGQAZABkAHAAZABwADwAZABkAHAAlAB8AHAAcABkAHwAPABkAHwASAA8AGQAGAAwABgAGAAMADAAAAAMAAAADAAMABgADAP3/9P/0//T/+v8AAPH/AAD0/+7/8f/x//H/5P/u/+f/8f/x/+f/7v/k/+H/4f/k/9v/1//X/9f/1P/U/9v/1//b/9v/1//O/9v/2//L/9T/2//k/+H/1P/U/9v/1//X/+H/5P/b/+T/5P/u/+7/7v/u//H//f/0//3/AwD9/wYAAwAMAAwADAADAAYAEgAMAA8AGQAZAA8AHAASABwAHwAfAB8AHwAfACkAKQASAB8ALAAfAB8ALAAfABwAHwAsABIAEgAZABkADwASABkAEgAcABkADwAMAAMAAwAMAAAAAAAGAAAAAwD6//3/+v/6/wAAAwDx//H//f/u//H//f/6//r/9P/u/+f/5//k/+f/9P/0/+T/5//n/+f/8f/x//H/5//9//3/5//x//H/5//0//T/8f/n/+7/5//k//H/5//9//T/7v/6//T/+v/9/wMA9P/x//3/+v/9//r/7v/9//T//f/0//T/7v8AAPH//f/6//r/9P/9//H/8f/6//T/9P/0/wAA7v/x/+7/7v/h/+T/5//x//T/8f/6//T/9P/6//T//f8DAP3//f8DAP3/AwAGAAwADwADAA8AGQAcAAwADAAZAB8AHwAyACkAMgAlADIAMgApADIAMgBCADgAQgA4ADgAOABFAD8ATwBSAEUARQBSAEUATwBPAEsAQgBCAFgARQA4AD8AOAA4ADUAOAAsADUAMgAsACUAKQAZABwAGQAcAB8ADwAMAA8ADAD0/wwAAADx//3/8f/u//H/9P/u/+f/1P/U/+T/4f/b/87/zv/L/77/yP/L/8j/y/+x/7v/wf++/8H/wf/L/7v/sf+x/7v/u/+7/8H/yP/I/8j/y//I/9f/yP/I/8j/1P/O/9T/1//X/9T/2//b/+f/zv/b/+T/4f/n/+T/5//u/+7/8f8AAPH/AAD6//H//f/x/+f/8f/9/wAAAAAAAPT//f8MAAMADAAMABIADwAMAAYAAAAAABIAAwAAAAAAAwAGAPr//f8GAP3/AAAGAAYABgAMAAYAAwD9/wAAGQADAAwAAwAGAAwADAAGABwADAAMAAwAEgAMAA8ADwAAAAMAEgAMAAYA/f8AAAwAEgASAA8AGQAZABkAGQAGAAYAEgASABwAEgApAAwAGQADABIAEgAcAAwAEgASAA8ADwAMABwADwAGAAAAAAADAP3/AAD9/wwAAAAAAAYA/f8AAAAABgAGAAwAAAAGAPr//f/9//3/+v/6//r/+v8AAAMABgAGAAAAAAD9//r/+v8AAAYAAAD6/wMADAAGAAYADAAAAAAAAwD6/wAAAAAGAAwADwAZAA8A/f8MAA8AHwAZABIAHAASACkAKQAsAB8AMgApADIAKQApAB8AHwAcACkAKQAlACUAHwAlAB8AJQASACkAMgAsABwAHAAZAAwAEgASABkADwAPAA8ABgAGAAYA+v/6//3//f/n//T/4f/u/+7/2//n/+H/1//L/9f/1P/L/8j/yP/O/77/wf/B/77/vv+7/7v/wf/L/8j/yP/B/8H/yP++/77/y//I/8v/y//X/8v/yP/O/9T/1P/h/+H/2//B/8v/1P/X/+T/4f/u/+f/5P/u//r/AAD9//3/+v8DAAYADAAPABIABgASABkAHwASABIAHAAPAA8ADAAMAB8AGQAZABIAHAAcABIAEgAPACUAGQApACUAJQAsACkAHwAfAB8AHwAZAB8AKQAfABkAJQAcAAwAHwAZAA8AHAAZABwAEgASAA8ADAAPAAwAAwADAAAABgADAAAA/f/0//3//f/0//r/+v/9//T/7v/6/+7/9P/n//T/7v/x/+f/2//x//T/5//x//3/+v/x/+f/4f/0//H/+v/6//r/9P/u//T//f/x/+7/+v/u//T/7v/x//H/AAD9//r//f8AAP3//f8DAP3//f/9/+7/9P/0/wAA+v8AAP3/AAADAAAA/f8AAAAAAwAAAAAA/f/9/wMAAwAGAAYABgASABIAAwAMAA8ABgAPAA8AEgAZABIADwAfABkALAAcACUAKQApACkAJQApACwANQA4AEUALAAsADUAOAAyAD8AMgA1AD8ANQA/AEIALAAsACwALAApACkAJQApACUAHwAyACUAGQAfAB8AHwAlABkAEgAPAA8AEgAPAAAA/f/6/wAA/f/u/+7/5//k/+H/1//b/+H/2//U/87/vv/O/87/yP/O/8v/u/++/77/u//B/7v/u/+1/77/u/++/77/sf+x/7H/vv/B/7v/vv++/8H/wf/I/8j/y/++/8H/1P/b/9T/2//h/9f/4f/u/+f/2//0/+H/7v/x/+f/+v/6//r/+v/6//3/AAASABkADAADAAwADwASABkAHAAsABwAHAAZABkAHAApABkAHAAZABIAHAAfAB8AHAAcABkAJQAcAA8AGQAPABIADAAMABkAEgASAAYABgAGAA8AGQAPAA8AEgASAAYAHAAPAAMADwAPAAYADAAMAA8ADAAMAAYABgADABIABgAPABkADwAPAA8ADwD9/wYADAAMAA8AAwADAAAA/f/9//3/AAD6//3/9P8AAP3/AwAAAAAADAAGAAYAAwAGAAAAAAD9/wAA'
],
sounds = {
// the sounds will be stored here
// pre-seed so that we can just execute without checking
'tick':'',
'ding':'',
'switch':'',
'ios':context ? context.createBuffer(1,1,22050) : ''
},
init = function() {
timerNode.onclick = timerNode.ontouchstart = function() {
if (mode === 'start'){
if (!unlockSound) {
playSound('ios');
unlockSound = true;
}
mode = 'countdown';
draw();
}
};
timerNode.innerHTML = 'Go';
},
playSound = function(sound) {
if (context && sounds[sound]) {
// html5rocks
var source = context.createBufferSource();
source.buffer = sounds[sound];
source.connect(contextDestination);
source.noteOn(0);
}
},
mode = 'start',
countdownDraws = 7,
defaultCountdown = countdownDraws * 1000,
currCountdown,
runDraws = 30,
defaultRun = runDraws * 1000,
currRun,
restDraws = 10,
defaultRest = restDraws * 1000,
currRest,
defaultFin = 5000,
currFin,
currStartPeriod = 0,
lastDraw = 0,
numDraws = 0,
draw = function() {
var currTime = new Date().getTime(),
elapsed = currTime - currStartPeriod,
keepDrawing = true;
if (mode === 'start') {
if (currIndex > 0) cellNodes[currIndex - 1].className = cellClass;
currIndex = 0;
mainNode.className = 'start';
timerNode.innerHTML = 'Go';
keepDrawing = false;
} else if (mode === 'run') {
if (numDraws > runDraws) {
var nextConfig = currIndex < config.length - 1 ? config[currIndex+1] : null;
playSound('ding');
timerNode.innerHTML = '';
line1Node.innerHTML = nextConfig ? nextConfig.line1 : ' ';
line2Node.innerHTML = nextConfig ? nextConfig.line2 || ' ' : ' ';
cellNodes[currIndex].className = cellClass;
if (currIndex < cellNodes.length-1) cellNodes[currIndex+1].className = inprogressClasses;
lastDraw = numDraws = 0;
mainNode.className = 'rest';
mode = 'rest';
} else if (currTime - lastDraw >= oneSecond) {
playSound('tick');
if (numDraws === runDraws/2 && currSwitch) playSound('switch');
timerNode.innerHTML = (runDraws - numDraws) || '';
lastDraw = currTime;
numDraws++;
}
} else if (mode === 'rest') {
if (numDraws > restDraws) {
if (currIndex < config.length-1) {
curr = config[++currIndex];
currSwitch = curr.switch;
line1Node.innerHTML = curr.line1 || ' ';
line2Node.innerHTML = curr.line2 || ' ';
mainNode.className = 'run';
mode = 'run';
lastDraw = numDraws = 0;
} else {
timerNode.innerHTML = 'Fin';
line1Node.innerHTML = '';
line2Node.innerHTML = '';
mainNode.className = 'fin';
mode = 'fin';
}
} else if (currTime - lastDraw >= oneSecond) {
timerNode.innerHTML = (restDraws - numDraws) || '';
lastDraw = currTime;
numDraws++;
}
} else if (mode === 'countdown') {
if (numDraws > countdownDraws) {
currIndex = 0;
curr = config[currIndex];
currSwitch = curr.switch;
line1Node.innerHTML = curr.line1;
line2Node.innerHTML = curr.line2;
cellNodes[currIndex].className = inprogressClasses;
mainNode.className = 'run';
lastDraw = numDraws = 0;
mode = 'run';
} else if (currTime - lastDraw >= oneSecond){
timerNode.innerHTML = (countdownDraws - numDraws) || '';
lastDraw = currTime;
numDraws++;
}
} else if (mode === 'fin') {
if (currTime - lastDraw > oneSecond*5) {
lastDraw = numDraws = 0;
timerNode.innerHTML = 'Go';
line1Node.innerHTML = '';
line2Node.innerHTML = '';
currIndex = 0;
mainNode.className = 'start';
lastDraw = numDraws = 0;
mode = 'start';
}
}
if (keepDrawing) window.requestAnimationFrame(draw);
};
// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
// requestAnimationFrame polyfill by Erik Möller
// fixes from Paul Irish and Tino Zijdel
(function() {
var lastTime = 0;
var vendors = ['ms', 'moz', 'webkit', 'o'];
for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']
|| window[vendors[x]+'CancelRequestAnimationFrame'];
}
if (!window.requestAnimationFrame)
window.requestAnimationFrame = function(callback, element) {
var currTime = new Date().getTime();
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
var id = window.setTimeout(function() { callback(currTime + timeToCall); },
timeToCall);
lastTime = currTime + timeToCall;
return id;
};
if (!window.cancelAnimationFrame)
window.cancelAnimationFrame = function(id) {
clearTimeout(id);
};
}());
// set up sounds
if (context) {
(function decode(num) {
if (num < soundFiles.length) {
// from http://html5doctor.com/taking-web-audio-offline-in-ios-6-safari/
context.decodeAudioData(Base64Binary.decodeArrayBuffer(soundFiles[num]), function(audioData) {
var currSound = num === 0 ? 'tick' : num === 1 ? 'ding' : 'switch';
sounds[currSound] = audioData;
decode(++num);
});
} else init();
})(0)
} else init();
}
</script>
</body>
</html>