var stepperc = 1/50;              // sprungweite in prozent zu bildbreitte/-höhe
var scrollway = 1;              // standardmäßige richtung, 1 oder -1
var scrollspeed = 20;           // nach wieviel millisekunden der nächste pixelstep erfolgt.
var scrollpause = 3000;         // wie lange ein bild angezeigt werden soll.
var imageArr = new Array();     // hier wird der komplette bildpfad jedes bildes reingeladen
var linkArr = new Array();     // hier der link für klick aufs bild
var nameArr = new Array();     // hier die namen der modelle

//var imagePath = '';
var positionH = 0;               // position des hintergrundildes, std: 0
var positionV = 0;
var imgInt = 0;                 // mit welchem bild begonnen werden soll: std: 0
var cntNames = 0;
var cntLinks = 0;
//var imageCount = 0;
//var auto = 1;
//var laufdiv;
var maxHorz;  
var maxVert;          
var act_position = new Array();	
var dirH;
var dirV;
var pixelstepH;
var pixelstepV;
var timer;                       // das timer-objekt

// innitalisiert den scroller
function initScroll()
{	
	pixelstepH = maxHorz*stepperc;
	pixelstepV = maxVert*stepperc;
	document.getElementById('ruhend').style.backgroundImage = "url(" + imageArr[1]+")";
	document.getElementById('laufend').style.backgroundImage = "url(" + imageArr[0]+")";
	
	//links schon beim start einmal setzen, damit man gleich klicken kann
	htmlObj = document.getElementsByName('scroller_mod_link');
	if (htmlObj.length>0) {
	    for (var i=0; i<htmlObj.length; i++) {
			htmlObj[i].href = linkArr[imgInt];
		}
	}
	
	document.getElementById('vorladen').style.backgroundImage = "url(" + imageArr[2]+")";
	imgInt = 1;
	
	set_rand_direction();
	if (imageArr.length>1)  {
      //  lauf();
	   window.setTimeout("lauf()", scrollpause/2);
	}
}

// lässt das hintergrundbild des lauf-divs übern schirm flitzen.
function lauf(noPause) {
		//var newPos = 0;
		positionH = positionH + scrollway*dirH*pixelstepH;
		positionV = positionV + scrollway*dirV*pixelstepV;
		document.getElementById('laufend').style.backgroundPosition = positionH+"px "+positionV+"px";
	
		// bild fliegt raus: wenn am rand dann nächstes bild
		if ( (scrollway == 1 && (positionV > maxVert || positionV < -1*maxVert || positionH > maxHorz || positionH < -1*maxHorz) ) ) {
			switchPic(noPause);
		}
		// bild kommt rein: wenn um 0, dann nächstes bild
		else if(scrollway == -1 && ((positionV < 2*pixelstepV && positionV > -2*pixelstepV) && (positionH < 2*pixelstepH && positionH > -2*pixelstepH)) ) {
		//	alert('xxx');
			switchPic(noPause);
		}
		else {
			timer = window.setTimeout("lauf("+noPause+")", scrollspeed);
		}
}

// wechselt das bild bwz. die hintergurndbilder der drei div-container.
function switchPic(noPause) {
	var htmlObj;
	
	// neue slide-richtung setzten
	set_rand_direction();
	
    // name und links ändern
    htmlObj = document.getElementsByName('scroller_mod_link');
	if (htmlObj.length>0) {
	    for (var i=0; i<htmlObj.length; i++) {
			htmlObj[i].href = linkArr[imgInt];
		}
	}
    /*
    // das hier funzt irgendwie nicht richtig. im IE bleibt der slider haengen
    // und auskommentiert geht alles.
    htmlObj = document.getElementsByName('scroller_mod_name');
	if (htmlObj.length>0) {
	    for (var k=0; k<htmlObj.length; k++) {
			htmlObj[k].innerHTML = nameArr[imgInt];
		}
	}
    */
    htmlObj = document.getElementsByName('scroller_mod_textlink');
	if (htmlObj.length>0) {
	    for (var k=0; k<htmlObj.length; k++) {
			htmlObj[k].href = linkArr[imgInt];
			htmlObj[k].innerHTML = nameArr[imgInt];
		}
	}
		
	if (scrollway == 1) {
    	document.getElementById('laufend').style.backgroundImage = document.getElementById('ruhend').style.backgroundImage;
    	positionH = 0;
    	positionV = 0;
        document.getElementById('laufend').style.backgroundPosition = "0px 0px";
		
		// wenn am ende von vorne anfangen
	   if (imgInt > imageArr.length-2) {
		imgInt = 0;
		document.getElementById('ruhend').style.backgroundImage = "url(" + imageArr[0]+")";
		document.getElementById('vorladen').style.backgroundImage = "url(" + imageArr[1]+")";
	   }
	   // sonst ganz normal weiter im takt
	   else {
		imgInt = imgInt + 1;
		document.getElementById('ruhend').style.backgroundImage = "url(" + imageArr[imgInt]+")";
		document.getElementById('vorladen').style.backgroundImage = "url(" + imageArr[imgInt+1]+")";
	   }
	}
	else if (scrollway == -1) {
	    document.getElementById('ruhend').style.backgroundImage = document.getElementById('laufend').style.backgroundImage;
    	positionH = dirH*maxHorz;
    	positionV = dirV*maxVert;
    	
    	document.getElementById('laufend').style.backgroundPosition = positionH+"px "+positionV+"px";
		// wenn ganz vorne, dann von hinten weiter machen
	   if (imgInt < 1) {
		imgInt = imageArr.length-1;
		document.getElementById('laufend').style.backgroundImage = "url(" + imageArr[imgInt]+")";
		document.getElementById('vorladen').style.backgroundImage = "url(" + imageArr[imgInt-1]+")";
	   }
	   // sonst ganz normal weiter im takt
	   else {
		imgInt = imgInt -1;
		document.getElementById('laufend').style.backgroundImage = "url(" + imageArr[imgInt]+")";
		document.getElementById('vorladen').style.backgroundImage = "url(" + imageArr[imgInt-1]+")";
	   }
	}
	else {
		// darf eigentlich nicht passieren.
	   //alert('oh' + scrollway);
	   scrollway = 1;
	   timer = window.setTimeout("switchPic()", 10);
	}
	
	
	// nach pause oder halt nicht laufen lassen
    window.clearTimeout(timer);
    if (noPause==true) {
	   lauf();
	}
	else {
	   timer = window.setTimeout("lauf()", scrollpause);
    }
}

// gibt den imgInt fürs nächste bild zurück. /nach switchPic geschrieben, ggf dort integrieren.
function getNext(j, next_way) {	
    if (next_way == 1) {
	   if ((imgInt+j) > imageArr.length-2) {
		imgNext = 0;
	   }
	   else {
		imgNext = imgInt + 1;
	   }
	}
	else if (next_way == -1) {
	   if ((imgInt+j) < 1) {
		imgNext = imageArr.length-1;
	   }
	   else {
		imgNext = imgInt -1;
	   }
	}
	else {
	   scrollway = 1;
	}
	
	return imgNext;
}


// übernimmt die scrollrichtung nach user-eingabe. es erfolgt bei klick ein bilderwelchsel in die gewünschte richtung
function setScrollWay(w)  {
	var cango = false;
	
	act_position = document.getElementById('laufend').style.backgroundPosition;
	act_position = act_position.split(" ");
	// reagiere nur, wenn das bild steht (ende oder anfang)
	if ( (act_position[0] == maxHorz+'px' || act_position[0] == -1*maxHorz+'px' || act_position[0] == '0px') && ( act_position[1] == maxVert+'px' || act_position[1] == -1*maxVert+'px' || act_position[1] == '0px') ) {
		cango = true;
	}
	//alert(cango);
    noPause = '';
	if (w=='l') {
	    if (scrollway == 1) {
			imgInt = getNext(0, -1);
			noPause = true;
		}
		scrollway = -1;
	}
	else if (w=='r') {
	    if (scrollway == -1) {
			imgInt = getNext(0, 1);
			noPause = true;
		}
		scrollway = 1;
	}
	
    if (cango) {
       window.clearTimeout(timer);
	   lauf(noPause);
    }
}

function set_rand_direction() {
	// horizontal
	rand = Math.random();
	if (rand < 0.33) {
		dirH = -1;
	}
	else if (rand < 0.66) {
		dirH = 1;
	}
	else {
		dirH = 0;
	}
	
	// verrtikal
	rand = Math.random();
	if (rand < 0.33) {
		dirV = -1;
	}
	else if (rand < 0.66) {
		dirV = 1;
	}
	else {
		dirV = 0;
	}
	
	if (dirV == 0 && dirH == 0) {
		dirH = 1;
	}
}

