goog.provide('oneup.ui.Paginator');

goog.require('goog.dom');
goog.require('oneup.ui.Component');

oneup.ui.Paginator = function(length, itemsPerPage, pageNum, urlFormat) {
	oneup.ui.Component.call(this);
	this.length_ = length;
	this.itemsPerPage_ = itemsPerPage;
	this.pageNum_ = pageNum;
	this.urlFormat_ = urlFormat;
	
};
goog.inherits(oneup.ui.Paginator, oneup.ui.Component);

oneup.ui.Paginator.prototype.render = function() {
	var holder = goog.dom.createDom('div', {'class': 'paginator'});
	if (this.length_ <= this.itemsPerPage_) {
		holder.appendChild(goog.dom.createDom('div', {}));
		return holder;
	}	
	var lastPage = Math.ceil(this.length_ / this.itemsPerPage_);
	var pageNum = this.pageNum_;
	var page = [];
	var pageLink = [];
	page[0] = pageNum != 1 && pageNum != 2 ? '<<1' : '';
	page[1] = pageNum != 1 ? '<' + (pageNum - 1) : '';
	page[2] = pageNum + '';
	page[3] = pageNum != lastPage ? (pageNum + 1) + '>' : '';
	page[4] = pageNum != lastPage && pageNum != lastPage -1 ? lastPage + '>>': '';
	pageLink[0] = 1;
	pageLink[1] = pageNum - 1;
	pageLink[2] = null;
	pageLink[3] = pageNum + 1;
	pageLink[4] = lastPage;
	
	var anchor;
	for (var i = 0; i < 5; i++) {
		if (page[i] != '') {
			if (pageLink[i]) {
				anchor = goog.dom.createDom('a', {'href': this.urlFormat_ + '' + pageLink[i]}, page[i]);
			} else {
				anchor = goog.dom.createDom('span', {}, page[i]);
			}
			holder.appendChild(anchor);
		}
	}
	return holder;
};

