//******************************************Variables communes*******************************************
var IE = document.all?true:false;

//******************************************Fonctions communes*******************************************
function addEvent(elm, evType, fn, useCapture)  
// cross-browser event handling for IE5+, NS6+ and Mozilla/Gecko
// By Scott Andrew
{
 if (elm.addEventListener)
 {
   elm.addEventListener(evType, fn, useCapture);  
   return true;  
 } 
 else if (elm.attachEvent) 
 {
   var r = elm.attachEvent('on' + evType, fn);  
   return r;  
 } 
 else
 {
     elm['on' + evType] = fn;
 }
}

function getNormalizedEvent(evt)
{
  return (window.event) ? window.event : evt;
}

function getEventTarget(evt)
{
  return (evt.srcElement) ? evt.srcElement : evt.target;
}

function getEventRelatedFrom(evt)
{
  return (evt.fromElement) ? evt.fromElement : evt.relatedTarget;
}

function getEventRelatedTo(evt)
{
  return (evt.toElement) ? evt.toElement : evt.relatedTarget;
}

function getAbsoluteX(obj)
{
  var absX = obj.offsetLeft;
  
  while (obj = obj.offsetParent)
    absX += obj.offsetLeft;
  return absX;
}

function getAbsoluteY(obj)
{
  var absY = obj.offsetTop;
  
  while (obj = obj.offsetParent)
    absY += obj.offsetTop;
  return absY;
}

//******************************************Fonctions Gallerie*******************************************
function initDocument()
{
  var imgRight = document.images['img_right'];

  //On ajuste la taille de l'image de droite du book
  adjustImgSize(imgRight, listSizes[0], listSizes[1], false);
  showData();
}

function showData()
{
  document.getElementById('book_data').style.zIndex = "9";
}

function hideData()
{
  document.getElementById('book_data').style.zIndex = "";
}

function adjustImgSize(objImg, imgWidth, imgHeight, imgParentToNone)
{
  var imgNewWidth;
  var imgNewHeight;
  var imgMarginTop;
  var imgParentClass = 'imgnone';
  imgNewHeight = IMG_MAX_HEIGHT;
  imgNewWidth = IMG_MAX_WIDTH;
  if (imgParentToNone)
    objImg.parentNode.className = imgParentClass;
  else
  {
    imgParentClass = 'imgVadjusted';
    if (imgWidth > 0 && imgHeight > 0)
    {
      imgNewWidth = Math.round((imgNewHeight/imgHeight)*imgWidth);
      if (imgNewWidth > IMG_MAX_WIDTH)
      {
        imgNewWidth = IMG_MAX_WIDTH;
        imgNewHeight = Math.round((imgNewWidth/imgWidth)*imgHeight);
        imgParentClass = 'imgHadjusted';
      }
    }
    imgMarginTop = Math.round((IMG_MAX_HEIGHT-imgNewHeight)/2);
    objImg.width = imgNewWidth;
    objImg.height = imgNewHeight;
    objImg.style.marginTop = imgMarginTop + 'px';
    objImg.parentNode.className = imgParentClass;
  }
}

function changePagesBar(nbPages, curPage)
{
  var objPageBarLink;
  for (i=1; i<=nbPages; i++)
  {
    objPageBarLink = document.getElementById('page_' + i)
    if (i == curPage)
      objPageBarLink.className = 'current_page';
    else
      if (i < curPage)
        objPageBarLink.className = 'previous_page';
      else
        objPageBarLink.className = 'next_page';
  }
}

function loadPage(pageToLoad)
{
  var imgLeft = document.images['img_left'];
  var imgRight = document.images['img_right'];
  var newLeftSrc = "";
  var newLeftWidth = 0;
  var newLeftHeight = 0;
  var newLeftOnClick = function() {;};
  var newLeftParentClassToNone = true;
  var newRightSrc = "";
  var newRightWidth = 0;
  var newRightHeight = 0;
  var newRightOnClick = function() {;};
  var newRightParentClassToNone = true;
  var newIdxLeft = -1;
  var newIdxRight = -1;
  var pagesCount = 0;
  var previousPage = 0;
  var nextPage = 0;

  pagesCount = Math.floor(listImages.length / 2) + 1;
  if (pageToLoad < 1 || pageToLoad > pagesCount)
    return;
  if (pageToLoad + 1 <= pagesCount)
    nextPage = pageToLoad + 1;
  if (pageToLoad - 1 > 0)
    prevPage = pageToLoad - 1;
  if (pageToLoad == 1)
    newIdxRight = 0;
  else
  {
    newIdxLeft = ((pageToLoad - 1) * 2) -1;
    newIdxRight = (pageToLoad - 1) * 2;
  }    
  if (newIdxLeft >= 0)
  {
    newLeftSrc = "img.php?code=" + listImages[newIdxLeft];
    newLeftWidth = listSizes[newIdxLeft*2];
    newLeftHeight = listSizes[newIdxLeft*2+1];
    if (prevPage != 0)
      newLeftOnClick = function() {loadPage(prevPage);};
    newLeftParentClassToNone = false;
  }
  if (newIdxRight < listImages.length)
  {
    newRightSrc = "img.php?code=" + listImages[newIdxRight];
    newRightWidth = listSizes[newIdxRight*2];
    newRightHeight = listSizes[newIdxRight*2+1];
    if (nextPage != 0)
      newRightOnClick = function() {loadPage(nextPage);};
    newRightParentClassToNone = false;
  }
  imgLeft.src = newLeftSrc;
  adjustImgSize(imgLeft, newLeftWidth, newLeftHeight, newLeftParentClassToNone);
  imgLeft.onclick = newLeftOnClick;
  imgRight.src = newRightSrc;
  adjustImgSize(imgRight, newRightWidth, newRightHeight, newRightParentClassToNone);
  imgRight.onclick = newRightOnClick;
  //Si on charge la première image, on met le block "book_data" au premier plan.
  if (newIdxRight == 0)
    showData();
  else
    hideData();
  changePagesBar(pagesCount, pageToLoad);
}
