/**
 * 
 * @param page
 * @param pages
 * @return
 */
function Paging(page,pages)
{	
	if (is_array(page))
	{
		pages = page['pages'];
		page = page['page'];
	}
	
	this.pages = parseInt(pages);
	this.page = parseInt(page);
	this.href = "";
	this.callback = null;
	this.eventHandlers = [];
	this.className = "paging";
	this.prefix = "[";
	this.postfix = "]";
	this.offset = 3;
	this.previousPageText = "« Zurück";
	this.nextPageText = "Weiter »";
};

/**
 * 
 * @param href
 * @return void
 */
Paging.prototype.setHref = function(href)
{
	this.href = href;
};

/**
 * @param callback
 * @return void
 */
Paging.prototype.setClickEvent = function(callback)
{
	this.href = "javascript:"+callback;
};

/**
 * 
 * @param className
 * @return
 */
Paging.prototype.setClassName = function(className)
{
	this.className = className;
};

/**
 * 
 * @return
 */
Paging.prototype.toString = function()
{
	var str = "";
	if (this.pages > 1)
	{	
		var start = this.page-this.offset;
		var end = this.page+this.offset;
				
		if (start<1) start = 1;
		if (end > this.pages) end = this.pages;

		for (var i=start;i<=end;i++)
		{
			str += this.getLink(i);
		}
		
		if (start > 1)
		{
			str = this.getLink(1)+ ' ... ' +str;
		}
		if (end < this.pages)
		{
			str += ' ... '+this.getLink(this.pages);
		}
		
		if (this.page > 1)
		{
			str = this.getLink(this.page-1, this.previousPageText)+str;
		}
		
		if (this.page < this.pages)
		{
			str += this.getLink(this.page+1, this.nextPageText);
		}
		str = '<div class="'+this.className+'">'+str+'</div>';
	}
	return str;
};

/**
 * 
 * @param page
 * @param linktext
 * @return
 */
Paging.prototype.getLink = function(page,linktext)
{
	if (!linktext)
	{
		linktext = page;
	}
	if (page==this.page)
	{
		return ' <span class="'+this.className+'">'+this.prefix+page+this.postfix+"</span> ";
	}
	else
	{
		return ' <a href="'+sprintf(this.href,page)+'" class="'+this.className+'">'+linktext+'</a> ';		
	}
};

