Rename the sample.xhtml file to demo.xhtml.
[hacks/simpleWebSlides.git] / simpleWebSlides.js
index 134369c..b526992 100644 (file)
@@ -1,8 +1,10 @@
 var SimpleWebSlides = new function () {
+
     var _self = this;
     var _total_slides;
     var _defered_custom = new Array();
     var _initialized = false;
+    var _animations_running = false;
 
     function push_following(t, i, v) {
         if ((typeof t[i]) == 'undefined') {
@@ -28,13 +30,13 @@ var SimpleWebSlides = new function () {
         var cur_frame = 0;
         canvas.find("*").each(function(i) {
 
-            if ($(this).hasClass("pause"))  cur_frame++;
+            if ($(this).hasClass("sws-pause"))  cur_frame++;
             push_following(frames, cur_frame, $(this));
 
         });
-        canvas.data("frames", { frames: frames,
-                                current: 0,
-                                custom: new Array() });
+        canvas.data("sws-frames", { frames: frames,
+                                    current: 0,
+                                    custom: new Array() });
 
     };
 
@@ -47,8 +49,8 @@ var SimpleWebSlides = new function () {
         //on partial doms
         var scripts = document.getElementsByTagName("script");
         var current = scripts[scripts.length-1];
-        console.log(current);
-        var slide = $(current).parents(".slide");
+
+        var slide = $(current).parents(".sws-slide");
         if (slide.length == 0) {
             console.log("no parent ?");
             return;
@@ -83,27 +85,28 @@ var SimpleWebSlides = new function () {
     };
     _self.firstSlide = function () { return 0; };
     _self.lastSlide = function () { return _self.getNumSlides() - 1; };
+
     _self.refresh = function () {
+
         var cur = _self.getCurrentSlide();
-        $(".canvas").each (function (i) {
+        $(".sws-canvas").each (function (i) {
             if (i == cur){
-                $(this).removeClass("other_slides").addClass("current_slide");
-                var info = $(this).data("frames");
+                $(this).removeClass("sws-inactive-slide").addClass("sws-active-slide");
+                var info = $(this).data("sws-frames");
                 var frames = info.frames;
                 var upto = info.current;
                 var custom = info.custom;
                 for(var j = 0; j < Math.max(frames.length, custom.length); j++) {
                     for (var k = 0; k < frames[j].length; k++) {
-                        if (j < upto || frames[j][k].hasClass("footer")){
-
-                            frames[j][k].removeClass("inactive_frame").addClass("active_frame");
-
-                        } else if (j == upto) {
-
-                            frames[j][k].removeClass("inactive_frame").addClass("current_frame");
+                        if (j <= upto || frames[j][k].hasClass("sws-footer")){
 
+                            frames[j][k]
+                                .removeClass("sws-inactive-frame")
+                                .addClass("sws-active-frame");
                         } else {
-                            frames[j][k].removeClass("active_frame").removeClass("current_frame").addClass("inactive_frame");
+                            frames[j][k]
+                                .removeClass("sws-active-frame")
+                                .addClass("sws-inactive-frame");
                         };
                     };
                     var callbacks;
@@ -113,11 +116,16 @@ var SimpleWebSlides = new function () {
                     };
                 };
 
-            } else if ($(this).hasClass("current_slide")) {
-                $(this).removeClass("current_slide").addClass("other_slides");
+                _animation_running = true;
+                $(this).find("*").promise().done(function() {
+                    _animation_running = false;
+                });
+            } else if ($(this).hasClass("sws-active-slide")) {
+                $(this).removeClass("sws-active-slide").addClass("sws-inactive-slide");
             };
-        });
 
+
+        });
     };
 
     _self.nextSlide = function () {
@@ -133,8 +141,8 @@ var SimpleWebSlides = new function () {
     _self.getFrameInfo = function () {
 
         var i = _self.getCurrentSlide();
-        var canvas = $($(".canvas")[i]);
-        var infos = canvas.data("frames");
+        var canvas = $($(".sws-canvas")[i]);
+        var infos = canvas.data("sws-frames");
         return infos;
     };
     _self.getCurrentFrame = function () { return _self.getFrameInfo().current; };
@@ -170,7 +178,7 @@ var SimpleWebSlides = new function () {
 
 
     _self.keyboardHandler = function (event) {
-
+        if (_animation_running) return;
         switch (event.which) {
         case 36:/* Home */
             _self.firstSlide();
@@ -204,28 +212,32 @@ var SimpleWebSlides = new function () {
     };
 
     var _init = function () {
-        _total_slides = $(".slide").length;
+        _total_slides = $(".sws-slide").length;
 
         $(document).keydown(_self.keyboardHandler);
         $(document).mousedown(_self.keyboardHandler);
 
         var cur = _self.getCurrentSlide();
-        $(".slide").each (function (i) {
-            var elem = '<div class="footer"><span class="current_slide_num">' + (i+1);
-            elem += '</span><span class="slide_num_sep"/><span class="total_slide_num">';
+        $(".sws-slide").each (function (i) {
+            var elem = '<div class="sws-footer"><span class="sws-current-slide-num">' + (i+1);
+            elem += '</span><span class="sws-slide-num-sep"/><span class="sws-total-slide-num">';
             elem += _self.getNumSlides() + '</span></div>';
-            if (!($(this).hasClass("nofooter"))) {
+            if (!($(this).hasClass("sws-option-nofooter"))) {
                 $(this).append($(elem));
             };
             var par = $(this).parent();
             $(this).remove();
-            var canvas = $('<div class="canvas"/>');
+            var canvas = $('<div class="sws-canvas"/>');
             canvas.append($(this));
             par.append(canvas);
             if (i == cur) {
-                canvas.addClass("current_slide").removeClass("other_slides");
+                canvas
+                    .addClass("sws-active-slide")
+                    .removeClass("sws-inacitve-slide");
             } else {
-                canvas.addClass("other_slides").removeClass("current_slide");
+                canvas
+                    .addClass("sws-inactive-slide")
+                    .removeClass("sws-active-slide");
             };
             init_canvas(canvas);
 
@@ -233,11 +245,11 @@ var SimpleWebSlides = new function () {
         for (var i = 0; i < _defered_custom.length; i++){
 
             var custom = _defered_custom[i];
-            var canvas = $(custom.src).parents(".canvas");
+            var canvas = $(custom.src).parents(".sws-canvas");
             if (canvas.length == 0) continue;
             canvas = $(canvas[0]);
 
-            var info = canvas.data("frames");
+            var info = canvas.data("sws-frames");
 
             push(info.custom, custom.frame, custom.fn);
         };