﻿
// vars used for navigating
var bookCode = '';
var pageNum = 0;
var pageNumPrev = 0;
var pageNumNext = 0;
var pageList = null;
var pageCount = 0;

// vars used to access html elements
var pageFlip = null;
var leftButton = null;
var leftButtonA = null;
var rightButton = null;
var rightButtonA = null;
var page = null;
var pageA = null;
var pageImg = null;
var navBarTop = null;
var navBarBottom = null;
var prevLinkTop = null;
var prevLinkBottom = null;
var nextLinkTop = null;
var nextLinkBottom = null;

function getHtmlElements()
{
  if (pageFlip != null) return;
  
  pageFlip = document.getElementById('pageFlip');
  
  leftButton = document.getElementById('leftButton');
  leftButtonA = leftButton.getElementsByTagName('a')[0];
  
  rightButton = document.getElementById('rightButton');
  rightButtonA = rightButton.getElementsByTagName('a')[0];
  
  page = document.getElementById('page');
  pageA = page.getElementsByTagName('a')[0];
  pageImg = pageA.getElementsByTagName('img')[0];
  
  navBarTop = document.getElementById('navBarTop');
  navBarBottom = document.getElementById('navBarBottom');
 
  prevLinkTop = document.getElementById('prevLinkTop');
  prevLinkBottom = document.getElementById('prevLinkBottom');
  nextLinkTop = document.getElementById('nextLinkTop');
  nextLinkBottom = document.getElementById('nextLinkBottom');
}

function pagePrev()
{
  pageShow(pageNumPrev);
  return false;
}

function pageNext()
{
  pageShow(pageNumNext);
  return false;
}

function pageGo(pNum)
{
  pageShow(pNum);
  return false;
}


function setImageUrl(pContainer, pUrl, pDesc)
{
  var found = false;
  var list = pContainer.getElementsByTagName('img');
  for (var i = 0; i < list.length; i++)
  {
    var s = list[i].src.substr(list[i].src.length - pUrl.length);
    if (s == pUrl)
    {
      found = true;
      list[i].style.display = 'inline';
    }
    else
    {
      list[i].style.display = 'none';
    }
  }
  if (!found)
  {
    var img = document.createElement('img');
    img.setAttribute('src', pUrl);
    img.setAttribute('alt', pDesc);
    img.setAttribute('title', pDesc);
    pContainer.appendChild(img);
  }
}

function updateNavBar()
{
  var list = navBarTop.getElementsByTagName('a');
  for (var i = 0; i < list.length; i++)
  {
    var pn = list[i].getAttribute('pagenum');
    if (pn != null)
    {
      list[i].className = ((pn == pageNum) ? "" : "in") + 'active';
    }
  }  
  var list = navBarBottom.getElementsByTagName('a');
  for (var i = 0; i < list.length; i++)
  {
    var pn = list[i].getAttribute('pagenum');
    if (pn != null)
    {
      list[i].className = ((pn == pageNum) ? "" : "in") + 'active';
    }
  }  
}

function pageShow(pNum)
{
  getHtmlElements();
  
  pageNum = pNum;

  // check if pageNum is in bounds
  if (pageNum < 0) pageNum = 0;
  if (pageNum > pageCount - 1) pageNum = pageCount - 1;

  setImageUrl(pageA, pageList[pageNum], 'Click to turn the page');

  // set visibility of buttons
  leftButton.style.visibility = (pageNum == 0) ? 'hidden' : 'visible';
  rightButton.style.visibility = (pageNum > pageCount - 2) ? 'hidden' : 'visible';

  // calculate the page numbers for the previous and next buttons
  pageNumPrev = pageNum - 1;
  if (pageNumPrev < 0) pageNumPrev = pageCount - 1;
  pageNumNext = pageNum + 1;
  if (pageNumNext > pageCount - 1) pageNumNext = 0;
  
  // set button url's
  var prev = '?c=' + bookCode + '&p=' + pageNumPrev;
  var next = '?c=' + bookCode + '&p=' + pageNumNext;
  
  leftButtonA.href = prev;
  rightButtonA.href = next;
  
  prevLinkTop.href = prev;
  prevLinkBottom.href = prev;
  nextLinkTop.href = next;
  nextLinkBottom.href = next;
  
  updateNavBar();
}


