Ampersand = function() {
  var amp = document.createElement('span');
  amp.className = 'amp';
  amp.appendChild(document.createTextNode('&'));

  /* frob ampersands in text in or under the given node */
  var frobNode = function(n) {
    if (n.nodeType == 3) { /* text nodes */
      var offset = n.data.indexOf('&');
      if (offset > -1) {
        var n2 = n.splitText(offset);
        var n3 = n2.splitText(1);
        n.parentNode.insertBefore(amp.cloneNode(true), n2);
        n.parentNode.removeChild(n2);
      }
    } else if (n.className != 'amp') { /* don't frob inside amp */
      for (var i=0; i<n.childNodes.length; i++) {
        frobNode(n.childNodes[i]);
      }
    }
  }

  return {
    /* frob ampersands in slides */
    frob : function(nodes) {
      for (var i = 0; i<nodes.length; i++) {
        frobNode(nodes[i]);
      }
    }
  }
}();

Slideshow = function() {
  var current;
  var slides = function() {
    var deck = document.getElementsByTagName('ol')[0];
    return deck.getElementsByTagName('li');
  }
  var first = function() {
    return slides()[0];
  }
  return {
    next: function() {
      if (!current) {
        current = first();
      } else {
        current.className = '';
        current = current.nextSibling;
        while (current.nodeType != 1 /* Node.ELEMENT_NODE */) {
          current = current.nextSibling;
        }
      }
      current.className = 'current';
    },
    prev: function() {
      if (!current) {
        current = first();
      } else {
        current.className = '';
        current = current.previousSibling;
        while (current.nodeType != 1 /* Node.ELEMENT_NODE */) {
          current = current.previousSibling;
        }
      }
      current.className = 'current';
    },
    click: function(e) {
      var key = (window.event) ? event.keyCode : e.keyCode;
      if (key == 39 /* right arrow */ || key == 32 /* space */) {
        Slideshow.next();
      } else if (key == 37 /* left arrow */) {
        Slideshow.prev();
      }
    },
    init: function() {
      document.onkeypress = Slideshow.click;
      Ampersand.frob(slides());
      Slideshow.next();
    }
  };
}();

window.onload = Slideshow.init;

