// JavaScript Document
// Stormcatch Webprojects BV, Remco Koemans 2011
// Custom made divScroll&Slider

//Config
var direction		= 'right' //left, right, up, down
var imgSpread		= 'img/scroller_nav.png' //path to img with arrow in four directions
var divWidth		= 728 //width only numeric
var divHeight		= 246 //height only numeric
var elementWidth	= 141 //width only numeric
var elementHeight	= 226 //height only numeric
var numberElements	= 10
var slideSize		= 'auto' //number of pixels, auto (full width), element (width of element)

//Dont set these vars
var nameOfDivVar;
var timer = new Array();
var interval;

function clearAllTimeouts(){
	for(key in timer){
		clearTimeout(timer[key]);
	}
}

//Build the scroller
function scroller(nameOfDiv){
	
	var scr = document.getElementById(nameOfDiv)
	var fix = document.getElementById(nameOfDiv + 'Fix');
	
	if (scr){
		if (fix){
			
			if (fix.childNodes){
				
			numberElements = 0;
				for(var i=0; i<fix.childNodes.length; i++){
					if (fix.childNodes[i].className == 'slider-blok'){
						numberElements++;	
					}
				}
			}
			
		}else{
			fix.innerHTML = 'Error: DIV with ID "' + nameOfDiv + 'Fix" not found';	
		}
	}else{
		alert('Error: DIV with ID "' + nameOfDiv + '" not found');	
	}
	
	nameOfDivVar = nameOfDiv;
	timer['basic'] = setTimeout("timeScroller('" + direction + "', 'slow')", 500);
	
}

function timeScroller(direction, speed){
	
	clearAllTimeouts();
	clearInterval(interval);
	
	if (speed == 'slow'){
		if (direction == 'right'){
			interval = setInterval("moveScroller(-1)", 50);
		}else{
			interval = setInterval("moveScroller(1)", 50);
		}
	}else if (direction == 'left'){
		moveScroller(350);
	}else if (direction == 'right'){
		moveScroller(-350);
	}
	
}

function moveScroller(move){
	
	clearAllTimeouts();
	
	var fix = document.getElementById(nameOfDivVar + 'Fix');	
	var cur = 0;
	
	if (fix){
		if (direction == 'right' || direction == 'left'){
			cur = fix.style.marginLeft;
			if (cur){
				cur = cur.replace(/px/i, "");
				cur = parseFloat(cur);
			}else{
				cur = 0;	
			}
			
			var newPos = (cur + move);
			
			if (newPos > 0){
				newPos = 0;
				
				clearInterval(interval);
				clearAllTimeouts();
				
				/*if ((cur + move) > 10){
					for(var i = 0; i < 10; i++){
						timer[i] = setTimeout('hardMove(' + (10-i) + ')', 50*i);
					}
				}*/
				
				hardMove(newPos);
				move = 0;
				
				interval = setInterval("moveScroller(-1)", 50);
				
			}else if (newPos < (-((elementWidth*numberElements)-divWidth))){
				newPos = -((elementWidth*numberElements)-divWidth);
				
				clearInterval(interval);
				clearAllTimeouts();
				
				/*if (((-((elementWidth*numberElements)-divWidth))) < (newPos+10)){
					for(var i = 0; i < 10; i++){
						timer[i] = setTimeout('hardMove(' + (newPos-(10-i)) + ')', 50*i);
					}
				}*/
				hardMove(newPos);
				move = 0;
				
				interval = setInterval("moveScroller(1)", 50);
				
			}
			
			if (move > 10 || move < -10){
				var origMove = move;
				var delay    = 0;
				for(var i = 2; i <= 20; i++){
					
					move = Math.round(origMove/i);
					newMove = (cur + (origMove - move));
					timer[i] = setTimeout('hardMove(' + newMove + ')', 50*i);
					
				}
				timer[99] = setTimeout('hardMove(' + (newPos) + ')', 0);
			}else{
				timer[99] = setTimeout('hardMove(' + (newPos) + ')', 0);
			}
			
		}else{
			cur = fix.style.marginTop;
			if (cur){
				cur = cur.replace(/px/i, "");
				cur = parseFloat(cur);
			}else{
				cur = 0;	
			}
			
			var newPos = (cur + move);
			if (newPos > 0){
				newPos = 0;
			}
			
			fix.style.marginTop = newPos + 'px';
		}

	}else{
		alert('Error: DIV with ID "' + nameOfDiv + 'Fix" not found');
	}
}

function hardMove(move){
	var fix = document.getElementById(nameOfDivVar + 'Fix');
	if (fix){
		fix.style.marginLeft = move+'px';	
	}
}
