var thumbdelay  = 2300;   // delay in milliseconds
var numthumb    = 0;      // number of image positions
var numimages   = 30;     // number of different images

var currentsbt  = 0;      // track current position
var currentimg  = 0;      // track current image
var thumbslides   = new Array();
var preloadImages = new Array();

function scrollToTop()
{
  scroll(0,0);
}

function switchthumbs()
{
  changeimage(currentsbt);
  currentsbt++;
  if (currentsbt==numthumb){
    currentsbt=0;
  }
}

function changeimage(sbtindex)
{
  if (preloadImages[currentimg])
  {
    image     = document.getElementById("sbt"+sbtindex);
    image.src = preloadImages[currentimg].src;
  }
  
  currentimg++;
  if (currentimg>=thumbslides.length)
    currentimg=0;
  
  preloadImage();
  setTimeout("switchthumbs()",thumbdelay);
}

function preloadImage()
{
  if (!preloadImages[currentimg])
  {
    preloadImages[currentimg]     = new Image(100,25); 
    preloadImages[currentimg].src = thumbslides[currentimg]; 
  }
}

function switchthumbsinit()
{
  if (document.getElementById)
  {
    var thumbHolders  = getElementsByClassName(document.getElementById('sidebar-right-holder'), 'div', 'sidebar-thumb');
    numthumb          = thumbHolders.length;
    currentimg        = numthumb;
    
    if (numthumb > 0 && thumbslides.length > numthumb)
    {
      preloadImage();
      setTimeout("switchthumbs()",thumbdelay);
    }
  }
}

function retrieveImagePopup(uuid, buildingType, imageNum)
{
  if(table = document.getElementById('header'))
  {
    scroll(0,0);
    removeImagePopup();
    
    var windowSize = getWindowSize();
    var height     = ((document.body.scrollHeight > windowSize[1]) ? document.body.scrollHeight : windowSize[1]);
    var opacity    = 60;

    var fillScreen = document.createElement("div");
    fillScreen.setAttribute("id", "popupFillScreen");  
    fillScreen.style.position        = 'absolute';
    fillScreen.style.zIndex          = '100';
    fillScreen.style.top             = '0px';
    fillScreen.style.left            = '0px';
    fillScreen.style.height          = height + 'px';
    fillScreen.style.width           = windowSize[0] + 'px';
    fillScreen.style.backgroundColor = '#000000';
    fillScreen.style.opacity         = (opacity / 100); 
    fillScreen.style.MozOpacity      = (opacity / 100); 
    fillScreen.style.KhtmlOpacity    = (opacity / 100); 
    fillScreen.style.filter          = "alpha(opacity=" + opacity + ")"; 
    document.body.appendChild(fillScreen);
    document.body.style.overflow  = 'hidden';
  
    var div = document.createElement('div');
    div.setAttribute('id', 'popupContainer');
    div.style.zIndex = '105';
    div.innerHTML = '<div id="popupLoading"></div>';
    document.body.insertBefore(div, table);
    
    document.body.style.cursor = 'wait';
  
    var url               = 'image_popup.php';
    var params            = 'uuid=' + uuid + '&buildingType=' + buildingType + '&number=' + imageNum;

    var responseFunction  = 'retrieveImagePopupResponse';
    remoteRequest(url, params, responseFunction, 'POST');
  }
}

function retrieveImagePopupResponse()
{
  if (http_request && http_request.readyState == 4)
  {
    document.body.style.cursor = 'default';
    if((http_request.status == 200 && http_request.responseText!='') && (div = document.getElementById('popupContainer')))
    {
      div.innerHTML = http_request.responseText;
      setTimeout(initImagePopupSlider, 800);
    }
  }
}

function initImagePopupSlider()
{
  getNavigationItemsWidth();
}

function removeImagePopup()
{
  if(popup = document.getElementById('popupContainer'))
  {
    document.body.removeChild(popup);
  }

  if(fillScreen = document.getElementById('popupFillScreen'))
  {
    document.body.removeChild(fillScreen);
    document.body.style.overflow  = 'auto';
  }
}

function updateNumImagePopup(num)
{
  if(elem = document.getElementById('curImgNum'))
  {
    elem.innerHTML = num;
  }
}

/**
* Function that returns the current image number
*
* @param void
* @return int
*/
function getCurrentImageNumber()
{
  var elem = null;

  if (elem = document.getElementById('currentImage'))
  {
    imageNumber = elem.innerHTML;

    if (imageNumber > 0)
    {
      imageNumber = parseInt(imageNumber);
      return imageNumber;
    }
  }

}

/**
* Function that sets the current image number
*
* @param int
* @return void
*/
function setCurrentImageNumber(imageNumber)
{
  if (!imageNumber || imageNumber < 1)
    return;

  var elem = null;

  if (elem = document.getElementById('currentImage'))
    elem.innerHTML = imageNumber;

}

/**
* Function that changes the next / previous buttons
*
* @param void
* @return void
*/
function changePreviousNextNavigation()
{
  imageNumber   = getCurrentImageNumber();
  numImages     = images.length;

  elemNext      = null;
  elemPrevious  = null;

  if (elemNext = document.getElementById('nextImageButton'))
    elemNext.style.visibility = (imageNumber < numImages) ? 'visible' : 'hidden';

  if (elemPrevious = document.getElementById('previousImageButton'))
    elemPrevious.style.visibility = (imageNumber > 1) ? 'visible' : 'hidden';

}

/**
* Function that moves to the previous image if available
* Depends on an array named "images" to be set
*
* @param void
* @return void
*/
function movePreviousImage()
{
  imageNumber = getCurrentImageNumber();
  imageNumber--;

  if (!imageNumber || imageNumber < 1)
    return;

  imageIndex = imageNumber - 1;

  if (images && images[imageIndex])
  {
    setCurrentImageNumber(imageNumber);
    setPopupImage('scroll', 'popupMainImage', images[imageIndex], images.length);
    changePreviousNextNavigation();
  }
}

/**
* Function that moves to the next image if available
* Depends on an array named "images" to be set
*
* @param void
* @return void
*/
function moveNextImage()
{
  imageNumber = getCurrentImageNumber();
  imageNumber++;

  if (!imageNumber)
    return;

  imageIndex = imageNumber - 1;

  if (images && images[imageIndex] && imageIndex <= images.length)
  {
    setCurrentImageNumber(imageNumber);
    setPopupImage('scroll', 'popupMainImage', images[imageIndex], images.length);
    changePreviousNextNavigation();
  }

}

