var numPhotos;
var slideFlowSlider;
var slideFlow;
var currentImg;
var preloader;
var fadeInTimeout;
var scrollHandler;
var photos;
var currentEffect;
var slHover;

var SLIDE_TPL = {
  'b_vertical' :      false,
  'b_watch':          true /* update while dragging */,
  'n_controlWidth':   660,
  'n_controlHeight':  13,
  'n_sliderWidth':    75,
  'n_sliderHeight':   75,
  'n_pathLeft' :      0,
  'n_pathTop' :       -2,
  'n_pathLength' :    660-26,
  'n_zIndex':         1
}

var SLIDEFLOW_DATA = {
  'imgWidthNormal':   90,
  'imgWidthTilted':   90,
  'imgHeight':        90,
  'slideDistance':    9,
  'onCenterClick':    handleSlideClick,
  'handleSlideMove':  handleSlideMove,
  'containerElement': null,
  'pathLeft':         '',
  'pathCenter':       '',
  'pathRight':        '',
  'transparentImg':   'images/transparent.gif',
  'cursorOpenHand':   'images/openhand.cur',
  'cursorClosedHand': 'images/closedhand.cur'
}

function change_download_url(url) {
  d_button = document.getElementById("download_button");
  if (d_button) {
    d_button.href = url;
  }
}

function handleSlideMove(pos) {
  if (slideFlowSlider) {
    slideFlowSlider.f_setValue(slideFlow.centerItem, false, true);
    update_current(slideFlow.centerItem);
  }
}

function handleSlideClick(imgNumber) {
  swapPhoto(imgNumber);
  slideFlowSlider.f_setValue(imgNumber, false, true);
  //update_current(imgNumber);
}

function update_current(imgNumber) {
  var images = slideFlow.containerElement.getElementsByTagName("img");
  for (index = 0; index < images.length; index++) {
    var image = images.item(index);
    if (index == imgNumber - 1) {
      image.setAttribute("id", "slideFlowSelectedImage");
    } else {
      image.setAttribute("id", "slideFlowImage");
    }
  }
}

function handleSlideSeek(pos) {
  //slideFlow.disableMoveUpdate();
  slideFlow.glideToSlide(pos);
  swapPhoto(pos);
}

function swapPhoto(photoNumber) {
/* Preload */
var imgSrc = photos[photoNumber - 1][0];
var imgBigSrc = photos[photoNumber - 1][2];
var downloadUrl = photos[photoNumber - 1][3];
var wasPreloading = (preloader != undefined);
preloader = new Image;
preloader.src = imgSrc;
currentImg = photoNumber;
update_current(currentImg);
if (downloadUrl != "") {
  change_download_url(downloadUrl)
}

/* Fade out and show new photo */
if (!wasPreloading) {
    if (currentEffect && currentEffect.state != 'finished') {
      currentEffect.cancel();
    }
  currentEffect = new Effect.Fade($('fadeArea'), { duration:0.4, to: 0.001, afterFinish: fadeIn });
}
}

function skipPhoto(offset) {
  photoNumber = currentImg + offset;
  if (photoNumber < 1 || photoNumber > numPhotos)
    return;

  swapPhoto(photoNumber);
  slideFlow.glideToSlide(photoNumber);
  slideFlowSlider.f_setValue(photoNumber, false, true);
  update_current(photoNumber);
}

function fadeIn() {
  fadeInTimeout = null;

  if (!preloader)
    return;
  else if (preloader.complete) {
    if (currentEffect && currentEffect.state != 'finished')
      currentEffect.cancel();
      currentEffect = new Effect.Appear($('fadeArea'), {duration: 0.8, beforeSetup: function(effect) {
    $('photo').src = preloader.src;
    preloader = undefined;
        }});
  } else if (!fadeInTimeout) {
    fadeInTimeout = window.setTimeout("fadeIn()", 100);
  }
}

function handleWheel(delta) {if (slideFlow)slideFlow.scroll(delta);}

function handleKeys(evt) {evt = (evt) ? evt : ((window.event) ? event : null);if (evt) {switch (evt.keyCode) {case 40: /* down */case 39: /* right */skipPhoto(1);return false;break;case 38: /* up */case 37: /* left */skipPhoto(-1);return false;break;}}}

function init() {
  swapPhoto(1);
  slideFlowSlider.f_show();
  //document.onkeydown = handleKeys;
  //scrollHandler = new ScrollHandler(handleWheel);
  
  /* Preload slider hover */
  slHover = new Image;
  //slHover.src = "images/seekslider-hover.gif";

  /* IE6 hover fix */
  if (window.ieFixHover) {
     $$('.sliderbutton').each(ieFixHover);
  }
}
