function Pager(client,items,page_size,buttons) { var _self=this; var _cur_page=_end_page=_start_page=_pages=0; if (!buttons) buttons=10; if (page_size) { _pages=Math.ceil(items/page_size); if (_pages < buttons) buttons=_pages; _end_page=buttons; } else { page_size=items; _pages=_end_page=1; } this.first=function() { return _cur_page*page_size}; this.last=function() { var i=(_cur_page+1)*page_size; if (i>items) i=items; return i; }; this.refresh=function(out) { if (_pages > 1) { var button=style=0; var pager=el(out,"div","pager"); var b_first=el(pager,"button",0,"pager_button","<<"); var b_prev=el(pager,"button",0,"pager_button","<"); if (_cur_page>0) { b_first.onclick=_self.first_page; b_prev.onclick=_self.prev_page; } for (var p=_start_page; p<_end_page; p++) { style=(p==_cur_page)? "pager_selected pager_button": "pager_button"; button=el(pager,"button",0,style,p+1,{page:p}); button.onclick=_self.goto_page; } var b_next=el(pager,"button",0,"pager_button",">"); var b_last=el(pager,"button",0,"pager_button",">>"); if (_cur_page < _pages){ b_next.onclick=_self.next_page; b_last.onclick=_self.last_page; } } }; this.first_page=function() { _cur_page=_start_page=0; _end_page=buttons; client.refresh(); }; this.prev_page=function() { if (_cur_page==_start_page) { if (--_start_page < 1) _start_page=0; _end_page=_start_page+buttons; } if (--_cur_page<1) _cur_page=0; client.refresh(); }; this.next_page=function() { if (_cur_page<_pages-1) _cur_page++; if (_cur_page==_end_page) { if (_end_page < _pages) _end_page++; _start_page=_end_page-buttons; } client.refresh(); }; this.last_page=function() { _cur_page=_pages-1; _end_page=_pages; _start_page=_end_page-buttons; client.refresh(); }; this.goto_page=function() { _cur_page=parseInt(this.getAttribute("page")); client.refresh(); }; }