
function Pager(containerId,pagesId,totalId,maxPerPage,pageCssClass,selectedCssClass,onPageClicked)
{
	var container = $get(containerId);
	var pages = $get(pagesId);
	var total = $get(totalId);
	var pageCss = pageCssClass,selectedCss = selectedCssClass;
	var loadCall = onPageClicked;
	var PAGES = 10,ATTR = "attrPagerPage";
	var page = 1,topPage = 1,max = maxPerPage;
	write(total,"0");
	write(pages,"---");

	this.build = function(totalRecords)
	{
		container.innerHTML = "";
		if(totalRecords == 0)
		{
			write(pages,"---");
			write(total,"0");
			return;
		}
		topPage = Math.ceil(totalRecords/max);
		if(page > topPage)page = topPage;//filters can lower number of pages
		var l = getLimits(page);
		var spn;
		if(page>PAGES)
		{
			spn = document.createElement("SPAN");
			spn.id = container.id+"PrevPage";
			spn.className = pageCss;
			spn.innerHTML = "&lt;&lt;";
			spn.onclick = function(e){previous();}
			container.appendChild(spn);
		}
		var up = l.to>topPage?topPage:l.to;
		for(var i=l.from;i<=up;i++)container.appendChild(getPage(i,i==page));
		var m = page%PAGES == 0 ? page : page - (page%PAGES) + PAGES;
		if(m < topPage)
		{
			spn = document.createElement("SPAN");
			spn.id = container.id+"NextPage";
			spn.className = pageCss;
			spn.innerHTML = "&gt;&gt;";
			spn.onclick = function(e){next();}
			container.appendChild(spn);
		}
		var f = page < 2 ? 1 : ((page-1)*max)+1;
		var t = f + max - 1;
		if(t > totalRecords)t = totalRecords;
		write(pages,f == t ? f : f+" - "+t);
		write(total,totalRecords);
	}
	this.reset = function()
	{
		page = 1;
		loadCall(getRow());
	}
	this.reload = function(){loadCall(getRow());}
	var paged = function(el)
	{
		page = parseInt(el.getAttribute(ATTR));
		loadCall(getRow());
	}
	var next = function()
	{
		page+=PAGES;
		if(page > topPage)page = topPage;
		loadCall(getRow());
	}
	var previous = function()
	{
		page-=PAGES;
		loadCall(getRow());
	}
	var getPage = function(p,selected)
	{
		var spn = document.createElement("SPAN");
		spn.id = container.id+"Page"+p;
		write(spn,p);
		spn.setAttribute(ATTR,p);
		if(selected)spn.className = selectedCss;
		else
		{
			spn.className = pageCss;
			spn.onclick = function(e){paged(this);}
		}
		return spn;
	}
	var getRow = function(){return page < 2 ? 0 : (page-1) * max;}
	var getLimits = function(page)
	{
		var m = page%PAGES;
		var f = m == 0 ? page - PAGES + 1 : page - m + 1;
		var t = f + PAGES - 1;
		return{from:f,to:t};
	}
}