(function () {
  google.load("books", "0");

  var viewerHeight;
  var headerHeight;

  function viewerInit() {
    var header = $(document.body).down('.header');
    headerHeight = header.offsetHeight;
    viewerHeight = (window.innerHeight || 700) - (headerHeight * 2);

    var viewer = $('viewerCanvas');
    viewer.style.height = viewerHeight + "px";
    var viewer = new google.books.DefaultViewer(
      viewer,
      { 'showLinkChrome': false }
    );
    viewer.load('ISBN:' + window.bookISBN, null, showButton);
  }


  function showButton() {
    var btn = $('viewerButton');
    btn.onclick = showViewer;
    btn.update("Preview this book!");
    Effect.Appear(btn, { duration: 0.4 });
  }

  function showViewer() {
    var viewer = $('viewerContainer');
    var btn = $('viewerButton');
    if (!window.noBookSlide) {
      new Effect.Scale(
        viewer,
        100,
        {
          scaleContent: false,
          scaleX: false,
          scaleY: true,
          scaleMode: { originalHeight: viewerHeight },
          scaleFrom: 0,
          duration: 0.75
        }
      );
    } else {
      viewer.style.height = viewerHeight + "px";
    }
    viewer.style.visibility = "visible";
    Effect.ScrollTo(viewer, { duration: 0.75, offset: 0 - headerHeight });
    btn.update('Hide the preview');
    btn.onclick = hideViewer;
  }

  function hideViewer() {
    var viewer = $('viewerContainer');
    var btn = $('viewerButton');
    if (!window.noBookSlide) {
      new Effect.Scale(
        viewer,
        0,
        {
          scaleContent: false,
          scaleX: false,
          scaleY: true,
          duration: 1,
          afterFinish: function () {
            viewer.style.visibility = "hidden";
          }
        }
      );
    } else {
      viewer.style.visibility = "hidden";
      viewer.style.height = "0";
    }
    btn.update('Preview this book!');
    btn.onclick = showViewer;
  }

  google.setOnLoadCallback(viewerInit);
})();

