/**
 * GkPromptor
 * 
 * @param String containerElt : id of the promptor element
 * @param Object config [optional] : the configurator object, each property is optional (see example below)
 * 
 * [ INIT EXAMPLE ]
 * 
 * p = new GkPromptor('prompteur', {
 *		scrollSpeed : 4, 
 *		releaseTime : 2,
 * 		frameRate : 30
 * });
 */
function GkPromptor (containerElt, config) {
	config = config || {};
	this._count = 0;
	this._itvCount = 0;
	this._speed = config.scrollSpeed || 2;
	this._releaseTime = (config.releaseTime * 1000) || 1000;
	this._containerElt = $(containerElt);
	this._promptHeight = $(containerElt).offsetHeight;
	this._promptItems = $(containerElt).getElementsByClassName('item');
	this._frameRate = config.frameRate || 30;
	
	this._init();
}//GkPromptor


GkPromptor.prototype._init = function () {
	var item;
	for (var i = 0; i < this._promptItems.length; i++) {
		item = this._promptItems[i];
		item.style.top = (this._promptHeight * i)+'px';
	}
	
	setTimeout(this._startMove.bindAsEventListener(this), this._releaseTime);
}//GkPromptor::_init


GkPromptor.prototype._startMove = function () {
	for (var i = 0; i < this._promptItems.length; i++) Element.show(this._promptItems[i]);
	this._itvCount = 0;
	this._itv = setInterval(this._move.bindAsEventListener(this), this._frameRate);
}//GkPromptor::_startMove


GkPromptor.prototype._move = function () {
	this._itvCount++;
	var addedPos = this._itvCount * this._speed;
	var item;
	for (var i = 0; i < this._promptItems.length; i++) {
		item = this._promptItems[i];
		if (addedPos <= this._promptHeight)
			item.style.top = (parseInt(item.style.top) - this._speed)+'px';
		else 
			item.style.top = (parseInt(item.style.top) - (addedPos - this._promptHeight))+'px';
			
	}
	
	if (addedPos >= this._promptHeight) this._prepareNext();
	
}//GkPromptor::_move


GkPromptor.prototype._prepareNext = function () {
	clearInterval(this._itv);
	for (var i = 0; i < this._promptItems.length; i++) {
		if (parseInt(this._promptItems[i].style.top) < -this._speed) {
			this._promptItems[i].style.top = (this._promptHeight * (this._promptItems.length - 1)) + 'px';
		}
	}
	
	setTimeout(this._startMove.bindAsEventListener(this), this._releaseTime);
}//GkPromptor::_prepareNext