var AjaxPager=Class.create({pager:null,maxShown:null,pFloor:null,pageCount:null,iCur:null,eventNS:null,pStateChangedEv:"pagerStateChanged",backSpan:null,forwardSpan:null,pagesSpan:null,initialize:function(b,a){this.pager=$(b);a=a||{};a=Object.extend({eventNS:"global",maxShown:7,pageCount:0,currentPage:0},a);this.eventNS=a.eventNS;this.maxShown=a.maxShown;this.pFloor=(this.maxShown/2).floor();this.pageCount=a.pageCount;this.iCur=a.currentPage;Event.observe(document,this.eventNS+":"+this.pStateChangedEv,this.onPagerStateChanged.bindAsEventListener(this));this.initPager()},initPager:function(){if(this.pager){this.pager.addClassName("pager");this.backSpan=new Element("span");this.backSpan.addClassName("sepRight");this.pager.insert({bottom:this.backSpan});this.appendPageLink(this.backSpan,"First",this.onPageClick,0);
this.appendPageLink(this.backSpan,"Prev",this.onPrevClick);this.pagesSpan=new Element("span");this.pager.insert({bottom:this.pagesSpan});for(var a=0;a<this.maxShown;++a){this.appendPageLink(this.pagesSpan,a+1,this.onPageClick,a)}this.forwardSpan=new Element("span");this.forwardSpan.addClassName("sepLeft");this.pager.insert({bottom:this.forwardSpan});this.appendPageLink(this.forwardSpan,"Next",this.onNextClick);this.appendPageLink(this.forwardSpan,"Last",this.onLastPageClick);this.refreshPager()}},createPageLink:function(c){var b=new Element("a");b.innerHTML=c;b.addClassName("pagerLink");b.href="#";return b},appendPageLink:function(e,f,d,c){var b=this.createPageLink(f);e.insert({bottom:b});if(c||c>=0){b.iPage=c}Event.observe(b,"click",d.bindAsEventListener(this));return b},refreshPager:function(){if(this.iCur<=0){this.backSpan.hide()
}else{this.backSpan.show()}var c=this.getFirstPageIndex();for(var a=0;a<this.maxShown;++a){var b=this.pagesSpan.childElements()[a];b.iPage=c+a;b.innerHTML=c+a+1;b.removeClassName("current");if(c+a==this.iCur){b.addClassName("current")}if(c+a>=this.pageCount){b.hide()}else{b.show()}}if(this.iCur>=this.pageCount-1){this.forwardSpan.hide()}else{this.forwardSpan.show()}},getFirstPageIndex:function(){var a=this.iCur-this.pFloor;if(a+this.maxShown>=this.pageCount){a=this.pageCount-this.maxShown}if(a<0){a=0}return a},onPrevClick:function(a){Event.stop(a);this.gotoPage(this.iCur-1)},onNextClick:function(a){Event.stop(a);this.gotoPage(this.iCur+1)},onLastPageClick:function(a){Event.stop(a);this.gotoPage(this.pageCount-1)},onPageClick:function(a){Event.stop(a);var c=a.element();c.blur();var b=c.iPage;if(b==this.iCur){return
}this.gotoPage(b)},gotoPage:function(a){var b=this.iCur;this.iCur=a;this.refreshPager();this.firePagerStateChanged(b)},getFullEventName:function(){return this.eventNS+":"+this.pStateChangedEv},firePagerStateChanged:function(a){document.fire(this.getFullEventName(),{owner:this,currentPage:this.iCur,previousPage:a,pageCount:this.pageCount})},onPagerStateChanged:function(a){if(a.memo.owner!=this){if(a.memo.currentPage!=undefined){this.iCur=a.memo.currentPage}if(a.memo.pageCount!=undefined){this.pageCount=a.memo.pageCount}this.refreshPager()}},setVisible:function(a){if(a==false){this.pager.hide()}else{this.pager.show()}}});
