// Scroll Funktion
iens6 = document.all||document.getElementById;
ns4 = document.layers;

// Variablen Init
var speed = 66; // Scrollgeschwindigkeit horizontal
var speedvert = 100; // Scrollgeschwindigkeit vertikal
var position = 0; // gibt die Position für den Jumpto an
var gesamthohe = 0;
var movedownvar;
var moveupvar;
var moveleftvar;
var moverightvar;
var crossobj;
var contentheight;
var contentwidth;

// Base
function getCrossObj(name) {
	if (iens6){
		crossob=document.getElementById? document.getElementById(name) : document.all.content;
	} else if (ns4){
		crossob=document.nscontainer.document.nscontent;
	}
	return crossob;
}
function prepareData(name){
	crossobj = getCrossObj(name);

	if (iens6){
		contentwidth=crossobj.offsetWidth;
	} else if (ns4){
		document.nscontainer.document.nscontent.visibility="show";
	}

	if (iens6){
		contentheight=crossobj.offsetHeight;
	} else if (ns4){
		document.nscontainer.document.nscontent.visibility="show";
	}
}


// Functionen
function moveup(speed){
	if(!speed) {
		speed = speedvert;
	}
	if(parseInt(crossobj.style.top)<0) {
		new Effect.Move(crossobj,{x:0,y:speed,mode:'relative',queue:{scope:'imageRowScope',limit:1},duration: 0.7});
	}
	return false;
}

function movedown(speed){
	if(!speed) {
		speed = speedvert;
	}
	var grenze = contentheight - parseInt(crossobj.parentNode.style.height);
	if((grenze + parseInt(crossobj.style.top)) > 0) {
			new Effect.Move(crossobj,{x:0,y:-speed,mode:'relative',queue:{scope:'imageRowScope',limit:1},duration: 0.7});
	}
	return false;
}

// JumpTo - Scrollt an eine bestimmte Stelle in Text
function jumpto(position){
	gesamthohe = 0;
	if(!position) {
		position = 0;
	}
	// Höhe der drüberliegenden Elemente bestimmen
	while(position>0){
		position--;
		heightInner = parseInt(document.getElementsByName("scrollblock")[position].offsetHeight);
		//alert(heightInner);
		gesamthohe += heightInner;
	}

	var grenze = contentheight - parseInt(crossobj.parentNode.style.height);
	if((grenze + parseInt(crossobj.style.top)) > 0) {
		akt_top = parseInt(crossobj.style.top);
		position = gesamthohe+akt_top;
		new Effect.Move(crossobj,{x:0,y:-position,mode:'relative',queue:{scope:'imageRowScope',limit:1},duration: 0.7});
	}
	return false;
}


function moveleft(){
	if (iens6&&parseInt(crossobj.style.left)>(contentwidth*(-1)+600)){
		crossobj.style.left=parseInt(crossobj.style.left)-speed+"px";
	}else if (ns4&&crossobj.left>(contentwidth*(-1)+198)){
		crossobj.left-=speed;
	}
	//moveleftvar=setTimeout("moveleft()",20);
	return false;
}

function moveright(){
	if (iens6&&parseInt(crossobj.style.left)<0){
		crossobj.style.left=parseInt(crossobj.style.left)+speed+"px";
	}else if (ns4&&crossobj.left<0){
		crossobj.left+=speed;
	}
	//moverightvar=setTimeout("moveright()",20);
	return false;
}


function moveRowLeft(parentElement) {
	// Getting all images by their class-name inside of parentElement
	var myImages = document.getElementsByClassName ('image-slide',parentElement);
	// This is the width of the visible area
	var viewport = 200; // default : 200
	var totalWidth = 200; // default : 200
	// Calculating the width of all images in this row
	for(var i=1; i<=(myImages.length); i++){
		totalWidth += myImages[i-1].getWidth();	
	}
	// Canceling function if the images don't even exceed the visible area -> no scrolling needed
	if(totalWidth <= viewport){return;}
	var maxScroll = totalWidth-viewport;
	// Getting the actual position of parentElement, strip down to the pure value via parseFloat
	var scrolled = parseFloat(document.getElementById(parentElement).getStyle('left') || '0');
	var diffScroll = maxScroll-Math.abs(scrolled);
	// If no scrolling is needed cancel the function
	if(diffScroll == 0){return;}
	if (diffScroll >= viewport) {
		// Move parentElement left (one time the viewport) and add a queue-limit so the effect is exclusive in this scope
		new Effect.Move(parentElement,{x:-viewport,y:0,mode:'relative',queue:{scope:'imageRowScope',limit:1}});
	} else {
		// Else only move left the diffScroll-amount
		new Effect.Move(parentElement,{x:-diffScroll,y:0,mode:'relative',queue:{scope:'imageRowScope',limit:1}});
	}
}

function moveRowRight(parentElement) {
	var myImages = document.getElementsByClassName ('image-slide',parentElement);
	var viewport = 200; // default : 200
	var totalWidth = 200; // default : 200
	for(var i=1; i<=(myImages.length); i++){
		totalWidth += myImages[i-1].getWidth();	
	}
	if(totalWidth <= viewport){return;}
	var maxScroll = 0;
	var scrolled = parseFloat(document.getElementById(parentElement).getStyle('left') || '0');
	var diffScroll = Math.abs(scrolled) - maxScroll;
	if(diffScroll == 0){return;}
	if (diffScroll >= viewport) {
		new Effect.Move(parentElement,{x:viewport,y:0,mode:'relative',queue:{scope:'imageRowScope',limit:1}});
	} else {
		new Effect.Move(parentElement,{x:diffScroll,y:0,mode:'relative',queue:{scope:'imageRowScope',limit:1}});
	}
}

function moveRowTop(parentElement, view, total) {
	// Getting all images by their class-name inside of parentElement
	var myImages = document.getElementsByClassName ('slide',parentElement);
	// This is the width of the visible area
	var viewport = view; // default : 200
	var totalHeight = total; // default : 200
	// Calculating the width of all images in this row
	for(var i=1; i<=(myImages.length); i++){
		totalHeight += myImages[i-1].getHeight();	
	}
	// Canceling function if the images don't even exceed the visible area -> no scrolling needed
	if(totalHeight <= viewport){return;}
	var maxScroll = totalHeight-viewport;
	// Getting the actual position of parentElement, strip down to the pure value via parseFloat
	var scrolled = parseFloat(document.getElementById(parentElement).getStyle('top') || '0');
	var diffScroll = maxScroll-Math.abs(scrolled);
	// If no scrolling is needed cancel the function
	if(diffScroll == 0){return;}
	if (diffScroll >= viewport) {
		// Move parentElement left (one time the viewport) and add a queue-limit so the effect is exclusive in this scope
		new Effect.Move(parentElement,{x:0,y:-viewport,mode:'relative',queue:{scope:'imageRowScope',limit:1}});
	} else {
		// Else only move left the diffScroll-amount
		new Effect.Move(parentElement,{x:0,y:-diffScroll,mode:'relative',queue:{scope:'imageRowScope',limit:1}});
	}
}

function moveRowDown(parentElement, view, total) {
	var myImages = document.getElementsByClassName ('slide',parentElement);
	var viewport = view; // default : 200
	var totalHeight = total; // default : 200
	for(var i=1; i<=(myImages.length); i++){
		totalHeight += myImages[i-1].getHeight();	
	}
	if(totalHeight <= viewport){return;}
	var maxScroll = 0;
	var scrolled = parseFloat(document.getElementById(parentElement).getStyle('top') || '0');
	var diffScroll = Math.abs(scrolled) - maxScroll;
	if(diffScroll == 0){return;}
	if (diffScroll >= viewport) {
		new Effect.Move(parentElement,{x:0,y:viewport,mode:'relative',queue:{scope:'imageRowScope',limit:1}});
	} else {
		new Effect.Move(parentElement,{x:0,y:diffScroll,mode:'relative',queue:{scope:'imageRowScope',limit:1}});
	}
}