.
[hacks/simpleWebSlides.git] / fds / anim / cartes.js
1 var cards = new Array ();
2 cards[0] = 1;
3 cards[1] = 1;
4 cards[2] = 1;
5 cards[3] = 1;
6 cards[4] = 1;
7
8 var interval = null;
9 function flip(n, cont)
10 {
11     if (interval == null) {
12         var img = document.getElementById("c" + n);
13         var width = img.width;
14         var height = img.height;
15         img.style.left = "0px";
16         img.style.height = height + "px";
17         var i = 0;
18         var move = true;
19         var step = 10;
20         function animate() 
21         {
22             if (move) {
23                 img.style.left = i + "px";
24                 img.style.width = (width - (2*i)) + "px";
25                 img.style.height = height + "px";
26                 i+= step;
27                 if (i >= width / 2) {
28                     if (cards[n] == 1) {
29                         img.src = "dos.png"
30                     } else {
31                         img.src = "carte" + n + ".png";
32                     };
33                     img.style.width = "0px";
34                     step = -step;
35                 } else if (i == 0) {
36                     move = false;
37                 };
38
39             } else {
40                 img.style.width = width;
41                 img.style.left = "0px";
42                 clearInterval(interval);
43                 interval = null;
44                 cards[n] = 1 - cards[n];
45                 var div = document.getElementById("d" + n);
46                 div.innerHTML = cards[n];
47                 if (cont !== undefined){ cont (); }
48             };
49
50         };
51         interval = setInterval(animate, 5);
52     };
53 }
54
55 function update_res() {
56     var res = document.getElementById("rescontent");
57     var acc = 0;
58     for(i = 4; i >= 0; i--){
59         acc = 2*acc;
60         acc += cards[i];
61     };
62     res.innerHTML = "= " + acc;
63 }
64
65 function endsWith(str, suffix)
66 {
67      return str.indexOf(suffix, str.length - suffix.length) !== -1;
68 }
69
70
71 function set_to_int(n)
72 {
73     var a = n;
74     var i;
75     var tmp = new Array();
76     for (i = 0; i < 5; i++)
77     {
78         tmp[i] = a & 1;
79         a = a >> 1;
80     };
81     i = -1;
82     function next() {
83         i++;
84         if (i < 5) {
85             if (tmp[i] != cards[i]) {
86                 flip(i, next);
87             } else {
88                 next ();
89             };
90         } else { update_res() };
91     };
92     next();
93 };
94
95 var counting = false;
96 function count(from, to)
97 {
98     if (!counting) {
99         counting = true;
100         var i = from;
101         var inter;
102         function advance() {
103             if (from > to) {
104                 clearInterval(inter);
105                 counting = false;
106             } else {
107                 set_to_int(from);
108                 from++;
109             };
110
111         }
112         inter = setInterval(advance, 2000);
113     }
114 }