/**
 * Scrollozandó objektumokat tárolja
 */
var scrollableObjects = new Array();

/**
 * Scrolloztatja a scrolloznivalókat
 * 
 * @return
 */
function Scroller() {
	var Time = new Date().getTime();
	
	for(var i = 0; i < scrollableObjects.length; ++i) {
		scrollableObjects[i].scroll(Time);
	}
	
	setTimeout("Scroller()", 10);
}

/**
 * Inicializálja a scrollozó osztályt
 * 
 * @param Obj
 */
function initScroll(Obj) {
	Obj.touch(new Date().getTime());
	
	if(Obj.object) {
		Obj.object.onmouseover = function() {
			Obj.isScrollable = false;
		}
		
		Obj.object.onmouseout = function() {
			Obj.isScrollable = true;
		}
		
		scrollableObjects.push(Obj);
	}
}

/**
 * A scrollozó osztályt kezeli
 * 
 * @param vTime
 */
function scroll(vTime) {	
	var Time = vTime;
	
	if(this.isScrollable) {
		if(this.isBorder() && this.isPaused) {
			if(this.lastTouch + this.pause <= Time) {
				this.isPaused = false;
				this.touch(Time);
			}
		} else if(this.isEnd()) {
			if(this.lastTouch + this.interval <= Time) {
				this.reset();
				this.isPaused = false;
				this.touch(Time);
			}
		} else {
			if(this.lastTouch + this.interval <= Time) {
				this.setCoord(this.getCoord() + this.step);
				this.isPaused = true;
				this.touch(Time);
			}
		}
	}
}

/**
 * Táccsolja az objektumot
 * 
 * @param Time
 * @return
 */
function touch(Time) {
	this.lastTouch = Time;
}

/**
 * Megállapítja, hogy megállóoz érkeztünk-e a scrollozás alatt
 * 
 * @return
 */
function isBorder() {
	if(this.getCoord() % (this.border) == 0) {
		return true;
	} else {
		return false;
	}
}

/**
 * X koordinátát adja vissza
 * 
 * @return
 */
function getX() {
	return parseInt(this.object.scrollLeft);
}

/**
 * Y koordinátát adja vissza
 * 
 * @return
 */
function getY() {
	return parseInt(this.object.scrollTop);
}

/**
 * Beállítja az X koordinátát
 * 
 * @param coord
 * @return
 */
function setX(coord) {
	this.object.scrollLeft = coord;
}

/**
 * Beállítja az Y koordinátát
 * 
 * @param coord
 * @return
 */
function setY(coord) {
	this.object.scrollTop = coord;
}

/**
 * Magasságot kérdez le
 * 
 * @return
 */
function getHeight() {
	return this.object.scrollHeight;
}

/**
 * Szélességet kérdez le
 * 
 * @return
 */
function getWidth() {
	return this.object.scrollWidth;
}

/**
 * Megállapítja, hogy falhoz ért-e az objektum
 * 
 * @return
 */
function isEnd() {
	if(this.getSize() == (this.getCoord() + this.border)) {
		return true;
	} else {
		return false;
	}
}

/**
 * Visszaállítja alaphelyzetbe a scrollozást
 * 
 * @return
 */
function reset() {
	this.object.scrollTop	= 0;
	this.object.scrollLeft	= 0;
}
