// JavaScript Document

function getObj(name) {
  	if (document.getElementById) {
  		this.obj = document.getElementById(name);
		this.style = document.getElementById(name).style;
  	}
  	else if (document.all) {
		this.obj = document.all[name];
		this.style = document.all[name].style;
  	}
  	else if (document.layers) {
   		this.obj = document.layers[name];
   		this.style = document.layers[name];
  	}
}

function Scroller(_layer, _top, _right, _bottom, _left, _step) {
	this.layer = _layer;
	this.scrollTop = _top;
	this.scrollRight = _right;
	this.scrollBottom = _bottom;
	this.scrollLeft = _left;
	this.scrollStep = _step;

	this.maxHeight = 0;
	this.scrollTarget = 0;
	this.scrollAmount = 10;
	this.scrollTime = 3;
	this.topper = 0;
	this.timer = 0;
	
	this.obj = new getObj(this.layer);
	this.maxHeight = this.obj.obj.offsetHeight;
	this.topper = this.obj.obj.offsetTop;
	
}

Scroller.prototype.scrollDown = function(_step) {
	this.scrollStep = (_step)?_step:this.scrollStep;
	
	this.maxHeight = this.obj.obj.offsetHeight;
	if (this.obj) {
		this.scrollTarget = this.scrollTop + this.scrollStep;
		this.realScrollDown();
	}
	return false;
}

Scroller.prototype.realScrollDown = function() {
	var tmp = 0;
	
	if (this.scrollTop < this.scrollTarget && this.scrollBottom < this.maxHeight) {
		tmp = this.scrollAmount;		
	
		if ( (this.scrollBottom + tmp) > this.maxHeight) {
			tmp = (this.scrollBottom + tmp) - this.maxHeight;
			
		}
		else if ( (this.scrollTop + tmp) > this.scrollTarget) {
			tmp = this.scrollTarget - (this.scrollTop + tmp);
		}
		if (tmp < 10) {
			return false;
		}

		this.scrollTop = this.scrollTop + tmp;
		this.scrollBottom = this.scrollBottom + tmp;
		this.topper = this.topper - tmp;
		
		var clipstring = 'rect('+this.scrollTop+'px '+this.scrollRight+'px '+this.scrollBottom+'px '+this.scrollLeft+'px)';
		this.obj.style.clip = clipstring;
		this.obj.style.top = this.topper+'px';
		
		var thisObj = this;
		this.timer = setTimeout(function() { thisObj.realScrollDown() }, this.scrollTime);
	}
	else {
		clearTimeout(this.timer);
	}
}


Scroller.prototype.scrollUp = function(_step) {
	this.scrollStep = (_step)?_step:this.scrollStep;
	
	this.maxHeight = this.obj.obj.offsetHeight;
	if (this.obj) {
		this.scrollTarget = this.scrollTop - this.scrollStep;
		this.realScrollUp();
	}
	return false;
}

Scroller.prototype.realScrollUp = function() {
	var tmp = 0;
	
	if (this.scrollTop > 0 && this.scrollTop > this.scrollTarget) {
		tmp = this.scrollAmount;
		if ( (this.scrollTop - tmp) < 0) {
			tmp = this.scrollTop;
		}
		else if ( (this.scrollTop - tmp) < this.scrollTarget) {
			tmp = this.scrollTarget - (this.scrollTop - tmp);
		}
		
			
		this.scrollTop = this.scrollTop - tmp;
		this.scrollBottom = this.scrollBottom - tmp;
		this.topper = this.topper + tmp;
		
		var clipstring = 'rect('+this.scrollTop+'px '+this.scrollRight+'px '+this.scrollBottom+'px '+this.scrollLeft+'px)';
		this.obj.style.clip = clipstring;
		this.obj.style.top = this.topper+'px';
		
		var thisObj = this;
		this.timer = setTimeout(function() { thisObj.realScrollUp() }, this.scrollTime);
	}
	else {
		clearTimeout(this.timer);
	}
}
