(function(factory) {
  "use strict";
  define("SBEDocumentViewerSetup", ["Abilian", "jquery"], factory);
})(function(Abilian, $) {
  "use strict";
  function setupDocumentViewer() {
    var container = $(".preview-container"),
      img = container.find("img.preview"),
      imgSrc = img.attr("src"),
      previewPrev = container.find(".preview-prev"),
      previewNext = container.find(".preview-next"),
      pageNum = container.data("pageNum");

    function showNav() {
      $(document).bind("keydown", keyDown);
    }

    function hideNav() {
      $(document).unbind("keydown", keyDown);
    }

    if (pageNum > 1) {
      container.hover(showNav, hideNav);
    } else {
      previewPrev.hide();
      previewNext.hide();
    }

    // TODO: what if we want to go past the last page?
    function loadNext() {
      var page = img.data("page") + 1;
      if (page >= pageNum) {
        page = page - 1;
      }
      img.attr("src", imgSrc + "&page=" + page);
      img.data("page", page);
      return true;
    }

    function loadPrev() {
      var page = img.data("page") - 1;
      if (page < 0) {
        page = 0;
      }
      img.attr("src", imgSrc + "&page=" + page);
      img.data("page", page);
      return true;
    }

    previewNext.click(loadNext);
    previewPrev.click(loadPrev);

    function keyDown(e) {
      var code = e.keyCode;
      // Note: we prevent default keyboard action
      if (code == 39) {
        loadNext();
        return false;
      } else if (code == 37) {
        loadPrev();
        return false;
      }
      return true;
    }
  }

  return setupDocumentViewer;
});
