var oChaser = {
	callRate	: 10,
	slideTime	: 1200,
	maxDiff		: document.all ? document.body.clientHeight : window.innerHeight,
	isIE		: document.all ? true : false,
	chaserDiv	: document[document.all ? "all" : "layers"]["myChaser"]
}

window.setInterval("oChaser.main()", oChaser.callRate)

oChaser.main = function() {
	this.currentY			= this.isIE ? this.chaserDiv.style.pixelTop : this.chaserDiv.top
	this.scrollTop			= this.isIE ? document.body.scrollTop : window.pageYOffset
	this.scrollHeight		= this.isIE ? document.body.scrollHeight : window.outerHeight
	this.availSpace			= this.scrollHeight - this.scrollTop
	this.midpoint			= this.scrollHeight / 8
	
	if ((this.maxDiff/4) > this.scrollTop) {
		var newTargetY = this.scrollTop + 200
	}
	else {
		if (this.availSpace > this.midpoint){
			var newTargetY = this.scrollTop + ((2/10) * this.maxDiff)
		}
		else if (this.availSpace < this.midpoint){
			var newTargetY = (this.scrollHeight - (this.availSpace)) + ((5/1) * this.maxDiff)
		}
	}

	if (this.currentY != newTargetY) {
		if (newTargetY != this.targetY) {
			this.targetY = newTargetY
			this.slideInit()
		}
		this.slide()
	}
}

oChaser.slideInit = function() {
	var now	= new Date()

	this.A		= this.targetY - this.currentY
	this.B		= Math.PI / (2 * this.slideTime)
	this.C		= now.getTime()

	if (Math.abs(this.A) > this.maxDiff) {
		this.D = this.A > 0 ? this.targetY - this.maxDiff : this.targetY + this.maxDiff
		this.A = this.A > 0 ? this.maxDiff : - this.maxDiff
	} else {
		this.D = this.currentY
	}
}

oChaser.slide = function() {
	var now	= new Date()
	var newY	= this.A * Math.sin(this.B * (now.getTime() - this.C)) + this.D
	newY		= Math.round(newY)

	if ((this.A > 0 && newY > this.currentY) ||
		(this.A < 0 && newY < this.currentY)) {
			if (this.isIE) this.chaserDiv.style.pixelTop = newY;
			else this.chaserDiv.top = newY
	}
}
