/* 
 * Developed by AMAI bvba (http://amai.be)
 * author: Bram Joris <bram at amai.be>)
 */


var ListModelWithPaging_SelectionLoadedEvent = "ListModelWithPaging.SelectionLoadedEvent";
var ListModelWithPaging_LeftReached = "ListModelWithPaging.LeftReached"; 
var ListModelWithPaging_RightReached = "ListModelWithPaging.RightReached";

function ListModelWithPaging(){	
	this.itemsPerPage = 3;
}

ListModelWithPaging.prototype.setItems = function (arrayOfObjects){
	this._arrayOfObjects = arrayOfObjects ;
	this.page = -1;
	this.maxPages= Math.floor(arrayOfObjects.length / this.itemsPerPage);
};

ListModelWithPaging.prototype.setItemsPerPage = function (ammount){
	this.itemsPerPage = ammount;
	this.maxPages= Math.floor(this._arrayOfObjects.length / this.itemsPerPage);
};

ListModelWithPaging.prototype.getItems = function (direction){
	var self = this;
	var returnArr;
	
	if(direction<0)direction = -1;
	else direction = 1;
	

	if(!this._arrayOfObjects){
		alert("!this._arrayOfObjects");
		
	}else{
		var returnArr = new Array();

		this.page+=direction;
		if(this.page<0)this.page=0;
		if(this.page>this.maxPages)this.page = this.maxPages;
		
		if(this.page==0)$(self).trigger(ListModelWithPaging_LeftReached, [true]);
		else $(self).trigger(ListModelWithPaging_LeftReached, [false]);
		
		
		if(this.page == this.maxPages)$(self).trigger(ListModelWithPaging_RightReached, [true]);
		else $(self).trigger(ListModelWithPaging_RightReached, [false]);
		
		var fromI = this.page*this.itemsPerPage;
		var toI = fromI + this.itemsPerPage;
		if(toI>this._arrayOfObjects.length)toI=this._arrayOfObjects.length;	
			
		returnArr = this._arrayOfObjects.slice(fromI, toI);
		//alert("returnArr.length" + returnArr.length+ " fromI:" + fromI + " toI:" + toI);
		$(self).trigger(ListModelWithPaging_SelectionLoadedEvent, [returnArr]);
	}
};

