/*
Artikelliste scrollen
2007-10-05 4koepfe, Andreas Tetzl
*/

var Slide = {

  slideWidth:166, // Breite eines Slides // TODO: per JS ermitteln
  nslides:0, // Anzahl Slides
  slider:null, // Slider-Objekt
  currentSlide:1, // aktuelles Slide
  slidesPerPage:3, // Anzahl Bilder die gleichzeitig nebeneinander zu sehen sind
  animDuration:1300, // Dauer der Animation (ms)
  animStartPos:0, // Position beim Start der Animation (Pixel, relativ zur Ursprungsposition)
  animEndPos:0, // Position beim Ende der Animation (Pixel, relativ zur Ursprungsposition)
  animStartTime:0, // Zeitpunkt des Animations-Starts (ms)
  animEndTime:0, // Zeitpunkt des Animations-Endes (ms)
  animInterval:null, // Rueckgabe von window.setInterval

  
  initSlide : function() {
    // Slides zaehlen
    for (Slide.nslides=0; document.getElementById("slide"+(Slide.nslides+1)); Slide.nslides++);
  
    // Breite des Sliders setzen
    Slide.slider=document.getElementById("slider");
    Slide.slider.style.width=(Slide.nslides*Slide.slideWidth)+"px";
  },
  
  
  animateSlide : function() {
    var time=new Date().getTime();
    if (time>Slide.animEndTime) {
      Slide.stopAnim();
      return;
    }
  
    var pos=(time - Slide.animStartTime) / (Slide.animEndTime - Slide.animStartTime);
    pos=1-pos;
    pos*=pos;
    pos=1-pos;
  
    var x=Math.round(Slide.animStartPos + (Slide.animEndPos-Slide.animStartPos)*pos);
  
    Slide.slider.style.marginLeft=x+"px";
  },
  
  startAnim : function() {
    Slide.animStartTime = new Date().getTime();
    Slide.animEndTime=Slide.animStartTime + Slide.animDuration;
  
    Slide.animInterval=window.setInterval(Slide.animateSlide, 5);
  },
  
  stopAnim : function() {
    if (Slide.animInterval!=null) {
      window.clearInterval(Slide.animInterval);
      Slide.animInterval=null;
      Slide.slider.style.marginLeft=Slide.animEndPos+"px";
    }
  },
  
  slideNext : function() {
    Slide.getButtonByClassName("next").style.visibility="visible";
    Slide.getButtonByClassName("prev").style.visibility="visible";
    if (Slide.currentSlide>=Slide.nslides-(Slide.slidesPerPage-1)-1) {
      Slide.getButtonByClassName("next").style.visibility="hidden";
    }
    
    if (Slide.currentSlide>=Slide.nslides-(Slide.slidesPerPage-1)) {
      return;
    }
  
    Slide.stopAnim();
  
    Slide.animStartPos=parseInt(Slide.slider.style.marginLeft) || 0;
    Slide.animEndPos=Slide.animStartPos - Slide.slideWidth;
  
    Slide.startAnim();
  
    Slide.currentSlide++;
  },
  
  slidePrev : function() {
    Slide.getButtonByClassName("next").style.visibility="visible";
    Slide.getButtonByClassName("prev").style.visibility="visible";
    if (Slide.currentSlide<=2) {
      Slide.getButtonByClassName("prev").style.visibility="hidden";
    }
    
    if (Slide.currentSlide<=1) {
      return;
    }
  
    Slide.stopAnim();
  
    Slide.animStartPos=parseInt(Slide.slider.style.marginLeft) || 0;
    Slide.animEndPos=Slide.animStartPos + Slide.slideWidth;
  
    Slide.startAnim();
  
    Slide.currentSlide--;
  },
  
  getButtonByClassName : function(className) {
    var btns=document.getElementsByTagName("button");
    for (var i=0; i<btns.length; i++) {
      if (btns[i].className==className) {
        return btns[i];
      }
    }
  }
  
};

