var scroller_frame;
var act_x;
var act_y;
var width;
var height;
var scroller = null;
var max_dx = 0;
var max_dy = 0;
var act_dx = 0;
var act_dy = 0;
var scroll_type;

function init ( frame_name, x, y, w, h, type ) {
	if (y < 0) y = 0; 
	scroller_frame = frame_name;
	act_x = x;
	act_y = y;
	width = w;
	height = h;
	scroll_type = ( type != null ) ? type : 'bremsen';

	parent.frames[scroller_frame].scrollTo( act_x, act_y )
}


function start ( dx, dy ) {
	max_dx = dx;
	max_dy = dy;
	if ( scroller == null ) { 
		scroller = window.setInterval( "scroll()", 40 );
	}
}


function stop () {
	max_dx = 0;
	max_dy = 0;
}


function scroll () {
	if ( act_dx < max_dx ) { act_dx++ }
	if ( act_dx > max_dx ) { act_dx-- }
	if ( act_dy < max_dy ) { act_dy++ }
	if ( act_dy > max_dy ) { act_dy-- }
	if ( act_dx == 0 && act_dy == 0 && max_dx == 0 && max_dy == 0 ) {
		window.clearInterval( scroller );
		scroller = null;
	}
	else {
		act_x += act_dx;
		act_y += act_dy;

		switch ( scroll_type ) {
			case "stoppen":
				// am Ende abrupt anhalten
				if ( act_x < 0 ) { act_x = 0; act_dx=0; max_dx=0; }
				if ( act_x > width ) { act_x = width; act_dx=0; max_dx=0; }
				if ( act_y < 0 ) { act_y = 0; act_dy=0; max_dy=0; }
				if ( act_y > height ) { act_y = height; act_dy=0; max_dy=0; }
			break;
			case "bremsen":
				// rechtzeitig abbremsen
				bx = ( act_dx * act_dx + act_dx ) / 2;
				by = ( act_dy * act_dy + act_dy ) / 2;
				if ( ( act_x <= bx && act_dx < 0 ) || ( act_x >= width - bx && act_dx > 0 ) ) { max_dx=0; }
				if ( ( act_y <= by && act_dy < 0 ) || ( act_y >= height - by && act_dy > 0 ) ) { max_dy=0; }
				if ( act_x < 0 ) { act_x = 0; act_dx=0; }
				if ( act_x > width ) { act_x = width; act_dx=0; }
				if ( act_y < 0 ) { act_y = 0; act_dy=0; }
				if ( act_y > height ) { act_y = height; act_dy=0; }
			break;
			case "loopen":
				// Loopen
					
				act_x = ( act_x > 0 ) ? act_x % width : ( act_x + width ) % width;
				act_y = ( act_y > 0 ) ? act_y % height : ( act_y + width ) % height;
			break;
		} 



	}

	parent.frames[scroller_frame].scrollTo( act_x, act_y )
}
