/* Class representing information of a single image */
function ImageInfo(src,bigSrc,description) {
  this.src=src;
  this.bigSrc=bigSrc;
  this.description=description;
}

/* This must be initialized to contain an array of ImageInfo objects */
var imageInfos;
/* Prefix for itemPicNavText */
var itemPicNavTextPrefix = "Image ";
var numberOfItemImages;
var numberOfImageRows;

/* Private members */
var currentImage;
var currentValue;
var topRow = 1;
var currentRowValue;
var bigImageObj;

function initImages(images, navTextPrefix, imagesPerRow, initialRows, selectedImage) {
  imageInfos = images;
  itemPicNavTextPrefix = navTextPrefix;
  numberOfItemImages = imageInfos.length;
  numberOfImageRows = numberOfImageRows = Math.ceil(numberOfItemImages / imagesPerRow);
  currentImage = selectedImage + 1;

  // Mark the selected image
  if (document.getElementById("itemthumb" + currentImage)) {
    document.getElementById("itemthumb" + currentImage).className = "thumbAct";
  }
 
  // Hide additional image rows
  for (var i = initialRows + 1; i < numberOfImageRows; ++i) {
    document.getElementById("itemThumbRow" + i).style.display = "none";
  }
  
  // Disable arrows if there is only one pic
  if (numberOfItemImages == 1 && document.getElementById("itemPicNavPrev")) {
    document.getElementById("itemPicNavPrev").style.display = "none";
    document.getElementById("itemPicNavDisabledPrev").style.display = "";
    document.getElementById("itemPicNavNext").style.display = "none";
    document.getElementById("itemPicNavDisabledNext").style.display = "";
  }

  // Set the top row
  topRow = Math.ceil(currentImage/imagesPerRow);
  
  if (topRow > numberOfImageRows - initialRows && numberOfImageRows >= initialRows) {
  	topRow = numberOfImageRows - initialRows + 1;
  }
    
  var currentImageRow;
  var topRowNumber = 'itemThumbRow' + topRow;
  var lastVisibleRowNumber = 'itemThumbRow' + (topRow + initialRows - 1);
  for(var i=1; i<=numberOfImageRows; i++) {
    currentImageRow = document.getElementById("itemThumbRow" + i);
    currentImageRow.style.display = "none";
  }
  for (var i=topRow; i < topRow + initialRows; i++) {
  	if (i <= numberOfImageRows) {
      document.getElementById('itemThumbRow' + i).style.display = "";
  	}
  }
}

function showPrevBigImage() {
  if (currentImage == 1) { setCurrentImage(numberOfItemImages); } else { currentValue = currentImage-1; setCurrentImage(currentValue); }
}

function showNextBigImage() {
  if (currentImage < numberOfItemImages) { currentValue = currentImage+1; setCurrentImage(currentValue); } else { setCurrentImage(1); }
}

function setCurrentImage(current, imagesPerRow) {
  var oldCurrentImage = currentImage;
  currentImage = current;
  changeBigImage();
  changeCurrentThumbBorder(oldCurrentImage);

  // Asetetaan topRow kuvavalinnan perusteella.
  var imageInRow = Math.ceil(current/imagesPerRow);
  if (imageInRow < topRow) setTopRow(imageInRow);
  if (imageInRow == topRow+2) setTopRow((imageInRow-1));
}

function changeBigImage() {
document.itemBigImage.src = imageInfos[currentImage-1].src;
document.scalingImage.src = imageInfos[currentImage-1].bigSrc;
document.getElementById("itemPicNavText").firstChild.nodeValue = itemPicNavTextPrefix + currentImage + "/" + numberOfItemImages;
document.getElementById("itemPicNavText2").firstChild.nodeValue = itemPicNavTextPrefix + currentImage + "/" + numberOfItemImages;
 //Vaihdetaan kuvateksti, korvataan enkoodatut lainausmerkit oikeilla...
  var imageTitle = imageInfos[currentImage-1].description.replace(/&#034;/g, '"');
  var titleObj = document.getElementById('imageTitle');
  if(titleObj) {
    text = document.createTextNode(imageTitle);
    while (titleObj.hasChildNodes()) {
      titleObj.removeChild(titleObj.lastChild);
    }
    titleObj.appendChild(text);
  }
  // Vaihdetaan myös skaalatun kuvan kuvateksti valmiiksi
  var titleObjS = document.getElementById('scalingImageTitle');
  if(titleObjS) {
    textS = document.createTextNode(imageTitle);
    while (titleObjS.hasChildNodes()) {
      titleObjS.removeChild(titleObjS.lastChild);
    }
    titleObjS.appendChild(textS);
  }

startFade();
return true;
}

function startFade() {
  for (var i=0;i<11;i++) {
    setTimeout('setOpacity('+i+')',30*i);  //return false;
  }
}

function setOpacity(value) {
  bigImageObj = document.getElementById('itemBigImage');
  scalingImageObj = document.getElementById('scalingImage');
  bigImageObj.style.opacity = value/10;
  bigImageObj.style.filter = 'alpha(opacity=' + value*10 + ')';
  scalingImageObj.style.opacity = value/10;
  scalingImageObj.style.filter = 'alpha(opacity=' + value*10 + ')';
}

function changeCurrentThumbBorder(thumbId) {
var oldThumb = "itemthumb" + thumbId;
var currentThumb = "itemthumb" + currentImage;
var oldThumbImage = document.getElementById(oldThumb);
oldThumbImage.style.border = "1px solid #ffffff"; 
var currentThumbImage = document.getElementById(currentThumb);
currentThumbImage.style.border = "1px solid #D20000"; 
}


function showPrevRow(initialRows) {
  if (topRow == 1) { return; } 
  else {
    currentRowValue = (topRow-1);
    setTopRow(currentRowValue, initialRows);
  }
}

function showNextRow(initialRows) {
  if ((topRow+1) < numberOfImageRows) {
    currentRowValue = (topRow+1);
    setTopRow(currentRowValue, initialRows);
  } else { return; }
}

function setTopRow(currentR, initialRows) {
  topRow = currentR;
  changeRowVisibility(initialRows);
}

function changeRowVisibility(initialRows) {
  var currentImageRow;
  var topRowNumber = 'itemThumbRow' + topRow;
  var lastVisibleRowNumber = 'itemThumbRow' + (topRow + initialRows - 1);
  for (var i=1; i<=numberOfImageRows; i++) {
    currentImageRow = document.getElementById("itemThumbRow" + i);
    currentImageRow.style.display = "none";
  }
  for (var i=topRow; i < topRow + initialRows; i++) {
    if (document.getElementById('itemThumbRow' + i))
      document.getElementById('itemThumbRow' + i).style.display = "";
  }
  changeArrowVisibility(initialRows);
}

function changeArrowVisibility(initialRows) {
  var upArrowObject = document.getElementById('upArrowRow');
  var upArrowDisabledObject = document.getElementById('upArrowDisabledRow');
  var downArrowObject = document.getElementById('downArrowRow');
  var downArrowDisabledObject = document.getElementById('downArrowDisabledRow');

  if (topRow > 1) { upArrowObject.style.display = ""; upArrowDisabledObject.style.display = "none"; } 
  else { upArrowObject.style.display = "none"; upArrowDisabledObject.style.display = ""; }

  if (topRow > (numberOfImageRows-initialRows)) { downArrowObject.style.display = "none"; downArrowDisabledObject.style.display = ""; } 
  else { downArrowObject.style.display = ""; downArrowDisabledObject.style.display = "none"; }
}

function startScale(direction) {
if (direction == 'up') {
document.getElementById('scalingContainer').style.display = "";
} else {
document.getElementById('scalingContainer').style.display = "none";
}

}
