$(document).ready(function(){ 
    /* SETTINGS */
    var mode = "click";   // Modus: auto = autoanimate  ||  click = mit Buttons links/rechts
    var timeout = 3; // Timeout (Zeit zwischen den Animationen in Sekunden)
	 var anspeed = 1000; // Geschwindigkeit in ms
    var currentPosition = 0; //legt die erste Position fest
    var slides = $(".slide");
    /* Settings Ende */
    
    if(mode == "auto"){                                                 // wenn Modus = auto
        var auto = true;                                               // setzte auto auf true
        $('.control').css("display","none");                           // verstecke Navigation
   }else if(mode == "click"){                                          // wenn Modus = Click
        var auto = false;                                              // setze auto auf false
        $('.control').css("display","inline");                         // zeige Navigation
   }       

       var animationtime = timeout * 1000; 
       var isAnimated = false; // zum Überprüfen, ob gerade animiert wird, setzten wir "isAnimated" auf false
       var numberOfSlides = slides.length; //zählt die Anzahl der slide-Container, also Seiten/Bilder
       var slideWidth = slides.width(); //speichert die Breite eines slide-Containers in slideWidth
       var maxSlideWidth = (parseInt(slideWidth) * numberOfSlides) + parseInt(slideWidth); //legt die maximale Slidebreite fest             

       $(".inner").css({"width":maxSlideWidth}); //gibt .inner die maximale Breite, die er sliden darf
       if(currentPosition <= 0) { //left fest, dass wenn aktuelle Position kleiner gleich 0 ist, der linke Kontrollbutton ausgeblendet ist und prüft ob derzeit bereits eine Animation im Gange ist. (!isAnimated ist gleichzusetzten mit isAnimated = true)
             $(".left").css("display","none");
             }

       /* SLIDE LEFT */
       function slideLeft(){   
           	if ( currentPosition >=0 && currentPosition <= numberOfSlides && !isAnimated) {    // wenn aktuelle Position kleiner gleich der maximalen Position UND wenn nicht gerade animiert wird
			isAnimated=true;    // setzte isAnimated auf true, sodass weitere Animationen geblockt werden.     
			$(".inner").stop().animate(    {"margin-left":"+="+ slideWidth},    //animiere slider nach rechts
				anspeed,                                //Geschwindigkeit (kann auch in ms angegeben werden (ohne Anführungszeichen) 2000 (2sek) oder 3000 (3sek) usw.
				function() {isAnimated = false }    // setzt isAnimated wieder auf false, nachdem die Animation beendet wurde
				); 
			currentPosition --; //bei klick wird die Position um 1 verringert
			if(currentPosition == 0) {                // wenn aktuelle Position ganz links...
				$(".left").hide();                    // ...verstecke den linken Slidebutton
				} 
			if(currentPosition <= numberOfSlides) {     // wenn aktuelle Position kleiner gleich der maximalen Position...
				$(".right").fadeIn(500);                 //    ...fade den rechten Slidebutton ein.
				}
			}
		}

       /* SLIDE RIGHT */
       function slideRight(){
           if ( currentPosition >= 0 && currentPosition <= numberOfSlides && !isAnimated) {    // wenn aktuelle Position kleiner gleich der maximalen Position UND wenn nicht gerade animiert wird
               	isAnimated=true;    // setzte isAnimated auf true, sodass weitere Animationen geblockt werden.
               	$(".inner").stop().animate(    {"margin-left":"-="+ slideWidth},    //animiere slider nach links
                       	anspeed,                                //Geschwindigkeit (kann auch in ms angegeben werden (ohne Anführungszeichen) 2000 (2sek) oder 3000 (3sek) usw.
                       	function() { isAnimated = false }     // setzt isAnimated wieder auf false, nachdem die Animation beendet wurde
                       	 ); 
              	 currentPosition ++;  //bei klick wird die Position um 1 erhöht
              	 if(currentPosition == numberOfSlides - 1) { // wenn aktuelle Position gleich der Anzahl an slide-Divs...
                  	 $(".right").hide();                    // ...blende rechten Button aus
                  	 }
              	 if(currentPosition == 1)     {                //    wenn aktuellen Position gleich 1 bzw höher als eins...
                  	 $(".left").fadeIn(500);                // ...blende linken Button ein

              	 }
              }
           }

       $(".left").live("click",function(){  //klick auf linken Kontrollbutton
           slideLeft();
           });
       $(".right").live("click",function(){ //klick auf rechten Kontrollbutton
           slideRight();
           });

       /* AUTO-ANIMATE */
       if(auto == true){   // Wenn autoAnimate true
           var counter = 0;
           var turn = false;
           setInterval(function() {
               if(counter >= 0 && counter < numberOfSlides - 1){   // wenn Variable counter größer gleich 0 UND Variable counter kleiner als numberOfslides - 1
                   slideRight();                                        // führe die Funktion slideRight() aus
                   counter++;                                            // und erhöhe pro Intervall Variable counter um +1. Wir zählen also von 0 bis numberOfSlides!
                   }
               if(counter == numberOfSlides - 1 ){                    // Wenn Variable counter gleich numberOfSlides - 1 (also nach rechts am Ende angekommen)
                   turn = true;                                        // setzte Variable turn auf true, damit der Slide nach left ausgelöst wird
                   counter = numberOfSlides * (-1);                        // und setzte Variable numberOfSlides auf negativ (
                   }
               if(turn == true){                                    // wenn turn gleich true
                   slideLeft();                                        // führe slideLeft() aus
                   counter++;                                            // und erhöhe Variable counter um +1. Wir zählen also von -numberOfSlides bis 0!
                   }
               if(counter == 0){                                    // wenn Variable counter wieder auf 0
                   turn = false;                                        // setzte turn wieder auf false
                   counter = 0;                                        // und zur Sicherheit counter nochmals auf 0;
                   }        
               }, animationtime);                                    //Animationszeit in Sek (oben in den Settings einstellbar)
           }
       });
