1 var SimpleWebSlides = new function () {
6 function push(t, i, v) {
7 if ((typeof t[i]) == 'undefined') {
11 if (l == 0 || !($.contains(t[i][l-1].get()[0], v.get()[0]))) {
16 function init_canvas(canvas) {
17 var frames = new Array ();
19 canvas.find("*").each(function(i) {
20 if ($(this).hasClass("pause")) cur_frame++;
21 push(frames, cur_frame, $(this));
24 canvas.data("frames", { frames: frames, current: 0 });
29 _self.getNumSlides = function () { return _total_slides; };
31 if (typeof(Storage)!=="undefined"){
32 _self.getCurrentSlide = function () {
33 //unary + casts to integer
34 var i = +(sessionStorage.current_slide);
35 if (!(i >= 0 && i < _self.getNumSlides())){
42 _self.setCurrentSlide = function (i) {
43 sessionStorage.current_slide = i;
47 var _current_slide = 0;
48 _self.getCurrentSlide = function () { return current_slide; };
49 _self.setCurrentSlide = function (i) { _current_slide = i; };
52 _self.firstSlide = function () { return 0; };
53 _self.lastSlide = function () { return _self.getNumSlides() - 1; };
54 _self.refresh = function () {
55 var cur = _self.getCurrentSlide();
56 $(".canvas").each (function (i) {
58 $(this).removeClass("other_slides").addClass("current_slide");
59 var info = $(this).data("frames");
61 var frames = info.frames;
62 var upto = info.current;
63 for(var j = 0; j < frames.length; j++) {
64 for (var k = 0; k < frames[j].length; k++) {
66 frames[j][k].css('visibility','visible');
68 frames[j][k].css('visibility','hidden');
72 } else if ($(this).hasClass("current_slide")) {
73 $(this).removeClass("current_slide").addClass("other_slides");
79 _self.nextSlide = function () {
80 _self.setCurrentSlide(Math.min(_self.getCurrentSlide()+1,
84 _self.previousSlide = function () {
85 _self.setCurrentSlide(Math.max(_self.getCurrentSlide()-1,
89 _self.getFrameInfo = function () {
91 var i = _self.getCurrentSlide();
92 var canvas = $($(".canvas")[i]);
93 var infos = canvas.data("frames");
96 _self.getCurrentFrame = function () { return _self.getFrameInfo().current; };
97 _self.setCurrentFrame = function (i) { _self.getFrameInfo().current = i; };
98 _self.firstFrame = function () { return 0; };
99 _self.lastFrame = function () { return _self.getFrameInfo().frames.length-1; };
101 _self.nextFrame = function () {
102 _self.setCurrentFrame(Math.min(_self.getCurrentFrame()+1,
106 _self.previousFrame = function () {
107 _self.setCurrentFrame(Math.max(_self.getCurrentFrame()-1,
108 _self.firstFrame()));
111 _self.next = function () {
112 var i = _self.getCurrentFrame();
113 if (i == _self.lastFrame())
119 _self.previous = function () {
120 var i = _self.getCurrentFrame();
121 if (i == _self.firstFrame())
122 _self.previousSlide();
124 _self.previousFrame();
128 _self.keyboardHandler = function (event) {
130 switch (event.which) {
143 case 34: /* PgDown */
147 case 8: /* backspace */
153 _self.previousSlide();
161 _self.init = function () {
162 _total_slides = $(".slide").length;
164 $(document).keydown(_self.keyboardHandler);
166 var cur = _self.getCurrentSlide();
167 $(".slide").each (function (i) {
168 var elem = '<div class="footer"><span class="current_slide_num">' + (i+1);
169 elem += '</span><span class="slide_num_sep"/><span class="total_slide_num">';
170 elem += _self.getNumSlides() + '</span></div>';
171 if (!($(this).hasClass("nofooter"))) {
172 $(this).append($(elem));
174 var par = $(this).parent();
176 var canvas = $('<div class="canvas"/>');
177 canvas.append($(this));
180 canvas.addClass("current_slide").removeClass("other_slides");
182 canvas.addClass("other_slides").removeClass("current_slide");
193 $(document).ready(SimpleWebSlides.init);