4f9902f780085ce99399425ba5e0a64075a6bb50
[blerg.git] / www / js / Bytex64.FX.js
1 if (typeof(Bytex64) == 'undefined') Bytex64 = {};
2 Bytex64.FX = {};
3 Bytex64.FX.version = 1.0;
4
5 Bytex64.FX.Effect = function(fx, secs) {
6     this.fx = fx;
7     this.secs = secs;
8
9     this.run = function() {
10         Bytex64.FX.run(this.fx, this.secs);
11     };
12 };
13
14 Bytex64.FX.ParallelEffect = function(fxs, secs) {
15     this.fx = function(p) {
16         for (i in fxs) {
17             fxs[i](p);
18         }
19     };
20     this.secs = secs;
21
22     this.run = function() {
23         Bytex64.FX.run(this.fx, this.secs);
24     };
25 };
26
27 Bytex64.FX.EffectChain = function(chain) {
28     this.chain = chain;
29     this.current = 0;
30
31     this.fx_current = function(p) {
32         this.chain[this.current].fx(p);
33     };
34
35     this.run = function() {
36         _this = this;
37
38         fx = function(p) {
39             _this.fx_current(p);
40             if (p == 1.0)
41                 _this.run_next();
42         };
43
44         Bytex64.FX.run(fx, this.chain[this.current].secs);
45     };
46
47     this.run_next = function() {
48         this.current++;
49
50         if (this.current >= this.chain.length) {
51             this.current = 0;
52             return;
53         }
54
55         this.run();
56     };
57
58 };
59
60 Bytex64.FX.updateInterval = 50;
61
62 Bytex64.FX.run = function(fx, secs) {
63     secs = secs * 1000;
64
65     var interval;
66     var start = (new Date()).getTime();
67
68     fx(0.0);
69
70     interval = setInterval(function() {
71         var d = (new Date()).getTime() - start;
72         if (d >= secs) {
73             clearInterval(interval);
74             fx(1.0);
75         } else {
76             fx(d/secs);
77         }
78     }, Bytex64.FX.updateInterval);
79 }
80
81 Bytex64.FX.create = function(fx, secs) {
82     return function() {
83         Bytex64.FX.run(fx, secs);
84     }
85 }
86
87 Bytex64.FX.fadeIn = function(elem) {
88     return function(p) {
89         if (p == 0.0)
90             elem.style.display = 'block';
91         elem.style.opacity = p;
92     }
93 }
94
95 Bytex64.FX.fadeOut = function(elem) {
96     return function(p) {
97         elem.style.opacity = 1.0 - p;
98         if (p == 1.0)
99             elem.style.display = 'none';
100     }
101 }
102
103 /* vim: set ts=4 sts=4 sw=4 expandtab: */