/* 
 * Amadeo Slider v.1.0
 * Author: Ruben Andrist, rubenandrist-at-gmx.ch
 * Auftrag: http://www.ansichtssache.ch / Yves Roth
 */

/* global variables */
currentImage   = 0; 
sliderTarget   = 0; 
sliderPosition = 0; 
sliderVelocity = 0; 
imageOpacity   = 100;
separators = new Array ();
updating=false;

/* init */
Foto = false;
Main = false;
Slider = false;
Active = false;

function Init(n,x){
  if(!document.getElementById) {
    return;
  }
  Foto  = document.getElementById('foto');
  Main  = document.getElementById('main');
  Slider= document.getElementById('slider');
  Active= document.getElementById('active');

  currentImage = n;
  sliderTarget = sliderPosition = 17*x;
  sliderHop();

  shiftedPosition = 290-sliderPosition;
  Slider.style.left = shiftedPosition+'px';
  Active.style.left = sliderPosition+'px';
  Foto.setAttribute('src',"fotos/"+currentImage+".jpg");
}

/* clickable functions */
function next(){
  do { 
    currentImage++;
    if ( currentImage>=numberOfItems ) currentImage-=numberOfItems;
    for (j=0;separators[j]!=currentImage && j<separators.length;j++);
  } while ( j<separators.length );

  sliderTarget+=17;
  fadeImage();
}

function prev(){
  do { 
    currentImage--;
    if ( currentImage<0 ) currentImage += numberOfItems;
    for (j=0;separators[j]!=currentImage && j<separators.length;j++);
  } while ( j<separators.length );

  sliderTarget-=17;
  fadeImage();
}

function pic(n,x){
  currentImage = n;
  sliderTarget = 17*x;
  fadeImage();
}

/* helper functions */
function fadeImage(){
  Main.style.background='url('+Foto.src+')';
  imageOpacity=0; updateOpacity();
  window.setTimeout("setSrc('fotos/"+currentImage+".jpg')",5);
  Active.style.left=sliderTarget+'px';
  if (updating==false) update();
}

function setSrc(src){
  Foto.setAttribute('src',src);
}

function sliderHop(){
  /* if current position out of range: do a hop */
  if (sliderPosition<numberOfBoxes*17){
    sliderPosition+=numberOfBoxes*17;
    sliderTarget+=numberOfBoxes*17;
  }
  if (sliderTarget>=2*numberOfBoxes*17){
    sliderPosition-=numberOfBoxes*17;
    sliderTarget-=numberOfBoxes*17;
  }
}

function min(a,b) { return (a>b)?b:a; }
function max(a,b) { return (a>b)?a:b; }

function updateOpacity() {
  opacity = (imageOpacity >= 100)?99.999:imageOpacity;
  Foto.style.filter = "alpha(opacity:"+opacity+")";
  Foto.style.KHTMLOpacity = opacity/100.0;
  Foto.style.MozOpacity = opacity/100.0;
  Foto.style.opacity = opacity/100.0;
}

/* updating */
function update(){
  updating = true;

  if (imageOpacity < 100) {
    imageOpacity+=20; updateOpacity();
    window.setTimeout("update()", 50);

  }else if (sliderTarget!=sliderPosition){
    sliderHop();
    if (sliderTarget < sliderPosition){
      sliderVelocity++;
      if (sliderVelocity*5 > sliderPosition-sliderTarget) sliderVelocity/=1.2;
      sliderPosition=max(sliderTarget,sliderPosition - sliderVelocity);
    }else{
      sliderVelocity--;
      if (-sliderVelocity*5 > sliderTarget-sliderPosition) sliderVelocity/=1.2;
      sliderPosition=min(sliderTarget,sliderPosition - sliderVelocity);
    }
    shiftedPosition = 290-sliderPosition;
    Slider.style.left = shiftedPosition+'px';
    Active.style.left= sliderTarget+'px';
    window.setTimeout("update()", 50);

  }else{
    updating = false;
    sliderVelocity=0;
  }
}

/* admin area */
function preview(i) {
  document.getElementById('preview').setAttribute('src','../fotos/'+i+'.jpg');
}

