Merge branch 'master' of ssh://git.nguyen.vg/hacks/simpleWebSlides
[hacks/simpleWebSlides.git] / fds / anim / cartes.js
diff --git a/fds/anim/cartes.js b/fds/anim/cartes.js
new file mode 100644 (file)
index 0000000..4966eba
--- /dev/null
@@ -0,0 +1,114 @@
+var cards = new Array ();
+cards[0] = 1;
+cards[1] = 1;
+cards[2] = 1;
+cards[3] = 1;
+cards[4] = 1;
+
+var interval = null;
+function flip(n, cont)
+{
+    if (interval == null) {
+        var img = document.getElementById("c" + n);
+        var width = img.width;
+        var height = img.height;
+        img.style.left = "0px";
+        img.style.height = height + "px";
+        var i = 0;
+        var move = true;
+        var step = 10;
+        function animate() 
+        {
+            if (move) {
+                img.style.left = i + "px";
+                img.style.width = (width - (2*i)) + "px";
+                img.style.height = height + "px";
+                i+= step;
+                if (i >= width / 2) {
+                    if (cards[n] == 1) {
+                        img.src = "dos.png"
+                    } else {
+                        img.src = "carte" + n + ".png";
+                    };
+                    img.style.width = "0px";
+                    step = -step;
+                } else if (i == 0) {
+                    move = false;
+                };
+
+            } else {
+                img.style.width = width;
+                img.style.left = "0px";
+                clearInterval(interval);
+                interval = null;
+                cards[n] = 1 - cards[n];
+                var div = document.getElementById("d" + n);
+                div.innerHTML = cards[n];
+                if (cont !== undefined){ cont (); }
+            };
+
+        };
+        interval = setInterval(animate, 5);
+    };
+}
+
+function update_res() {
+    var res = document.getElementById("rescontent");
+    var acc = 0;
+    for(i = 4; i >= 0; i--){
+        acc = 2*acc;
+        acc += cards[i];
+    };
+    res.innerHTML = "= " + acc;
+}
+
+function endsWith(str, suffix)
+{
+     return str.indexOf(suffix, str.length - suffix.length) !== -1;
+}
+
+
+function set_to_int(n)
+{
+    var a = n;
+    var i;
+    var tmp = new Array();
+    for (i = 0; i < 5; i++)
+    {
+        tmp[i] = a & 1;
+        a = a >> 1;
+    };
+    i = -1;
+    function next() {
+        i++;
+        if (i < 5) {
+            if (tmp[i] != cards[i]) {
+                flip(i, next);
+            } else {
+                next ();
+            };
+        } else { update_res() };
+    };
+    next();
+};
+
+var counting = false;
+function count(from, to)
+{
+    if (!counting) {
+        counting = true;
+        var i = from;
+        var inter;
+        function advance() {
+            if (from > to) {
+                clearInterval(inter);
+                counting = false;
+            } else {
+                set_to_int(from);
+                from++;
+            };
+
+        }
+        inter = setInterval(advance, 2000);
+    }
+}
\ No newline at end of file