var Paginator=function(a,b,c,d,e){if(!document.getElementById(a)||!b||!c)return false;this.inputData={paginatorHolderId:a,pagesTotal:b,pagesSpan:c<b?c:b,pageCurrent:d,baseUrl:e?e:"/pages/"};this.html={holder:null,table:null,trPages:null,trScrollBar:null,tdsPages:null,scrollBar:null,scrollThumb:null,pageCurrentMark:null};this.prepareHtml();this.initScrollThumb();this.initPageCurrentMark();this.initEvents();this.scrollToPageCurrent()};
Paginator.prototype.prepareHtml=function(){this.html.holder=document.getElementById(this.inputData.paginatorHolderId);this.html.holder.innerHTML=this.makePagesTableHtml();this.html.table=this.html.holder.getElementsByTagName("table")[0];this.html.tdsPages=this.html.table.getElementsByTagName("tr")[0].getElementsByTagName("td");this.html.scrollBar=getElementsByClassName(this.html.table,"div","scroll_bar")[0];this.html.scrollThumb=getElementsByClassName(this.html.table,"div","scroll_thumb")[0];this.html.pageCurrentMark=
getElementsByClassName(this.html.table,"div","current_page_mark")[0];this.inputData.pagesSpan==this.inputData.pagesTotal&&addClass(this.html.holder,"fullsize")};
Paginator.prototype.makePagesTableHtml=function(){for(var a=100/this.inputData.pagesSpan+"%",b='<table width="100%"><tr>',c=1;c<=this.inputData.pagesSpan;c++)b+='<td width="'+a+'"></td>';b+='</tr><tr><td colspan="'+this.inputData.pagesSpan+'"><div class="scroll_bar"><div class="scroll_trough"></div><div class="scroll_thumb"><div class="scroll_knob"></div></div><div class="current_page_mark"></div></div></td></tr></table>';return b};
Paginator.prototype.initScrollThumb=function(){this.html.scrollThumb.widthMin="8";this.html.scrollThumb.widthPercent=this.inputData.pagesSpan/this.inputData.pagesTotal*100;this.html.scrollThumb.xPosPageCurrent=(this.inputData.pageCurrent-Math.round(this.inputData.pagesSpan/2))/this.inputData.pagesTotal*this.html.table.offsetWidth;this.html.scrollThumb.xPos=this.html.scrollThumb.xPosPageCurrent;this.html.scrollThumb.xPosMin=0;this.setScrollThumbWidth()};
Paginator.prototype.setScrollThumbWidth=function(){this.html.scrollThumb.style.width=this.html.scrollThumb.widthPercent+"%";this.html.scrollThumb.widthActual=this.html.scrollThumb.offsetWidth;if(this.html.scrollThumb.widthActual<this.html.scrollThumb.widthMin)this.html.scrollThumb.style.width=this.html.scrollThumb.widthMin+"px";this.html.scrollThumb.xPosMax=this.html.table.offsetWidth-this.html.scrollThumb.widthActual};
Paginator.prototype.moveScrollThumb=function(){this.html.scrollThumb.style.left=this.html.scrollThumb.xPos+"px"};Paginator.prototype.initPageCurrentMark=function(){this.html.pageCurrentMark.widthMin="3";this.html.pageCurrentMark.widthPercent=100/this.inputData.pagesTotal;this.setPageCurrentPointWidth();this.movePageCurrentPoint()};
Paginator.prototype.setPageCurrentPointWidth=function(){this.html.pageCurrentMark.style.width=this.html.pageCurrentMark.widthPercent+"%";this.html.pageCurrentMark.widthActual=this.html.pageCurrentMark.offsetWidth;if(this.html.pageCurrentMark.widthActual<this.html.pageCurrentMark.widthMin)this.html.pageCurrentMark.style.width=this.html.pageCurrentMark.widthMin+"px"};
Paginator.prototype.movePageCurrentPoint=function(){this.html.pageCurrentMark.style.left=this.html.pageCurrentMark.widthActual<this.html.pageCurrentMark.offsetWidth?(this.inputData.pageCurrent-1)/this.inputData.pagesTotal*this.html.table.offsetWidth-this.html.pageCurrentMark.offsetWidth/2+"px":(this.inputData.pageCurrent-1)/this.inputData.pagesTotal*this.html.table.offsetWidth+"px"};
Paginator.prototype.initEvents=function(){var a=this;this.html.scrollThumb.onmousedown=function(b){if(!b)b=window.event;b.cancelBubble=true;b.stopPropagation&&b.stopPropagation();var c=getMousePosition(b).x-this.xPos;document.onmousemove=function(d){if(!d)d=window.event;a.html.scrollThumb.xPos=getMousePosition(d).x-c;a.moveScrollThumb();a.drawPages()};document.onmouseup=function(){document.onmousemove=null;a.enableSelection()};a.disableSelection()};this.html.scrollBar.onmousedown=function(b){if(!b)b=
window.event;if(!matchClass(a.paginatorBox,"fullsize")){a.html.scrollThumb.xPos=getMousePosition(b).x-getPageX(a.html.scrollBar)-a.html.scrollThumb.offsetWidth/2;a.moveScrollThumb();a.drawPages()}};addEvent(window,"resize",function(){Paginator.resizePaginator(a)})};
Paginator.prototype.drawPages=function(){var a=Math.round(this.html.scrollThumb.xPos/this.html.table.offsetWidth*this.inputData.pagesTotal),b="";if(a<1){a=1;this.html.scrollThumb.xPos=0;this.moveScrollThumb()}else if(a>=this.inputData.pagesTotal-this.inputData.pagesSpan){a=this.inputData.pagesTotal-this.inputData.pagesSpan+1;this.html.scrollThumb.xPos=this.html.table.offsetWidth-this.html.scrollThumb.offsetWidth;this.moveScrollThumb()}for(var c=0;c<this.html.tdsPages.length;c++){b=a+c;b=b==this.inputData.pageCurrent?
"<span><strong>"+b+"</strong></span>":"<span><a href='"+this.inputData.baseUrl+b+"'>"+b+"</a></span>";this.html.tdsPages[c].innerHTML=b}};Paginator.prototype.scrollToPageCurrent=function(){this.html.scrollThumb.xPosPageCurrent=(this.inputData.pageCurrent-Math.round(this.inputData.pagesSpan/2))/this.inputData.pagesTotal*this.html.table.offsetWidth;this.html.scrollThumb.xPos=this.html.scrollThumb.xPosPageCurrent;this.moveScrollThumb();this.drawPages()};
Paginator.prototype.disableSelection=function(){document.onselectstart=function(){return false};this.html.scrollThumb.focus()};Paginator.prototype.enableSelection=function(){document.onselectstart=function(){return true}};Paginator.resizePaginator=function(a){a.setPageCurrentPointWidth();a.movePageCurrentPoint();a.setScrollThumbWidth();a.scrollToPageCurrent()};
function getElementsByClassName(a,b,c){a=a.getElementsByTagName(b);if(!c)return a;b=[];for(var d=0;d<a.length;d++)if(matchClass(a[d],c))b[b.length]=a[d];return b}function addClass(a,b){replaceClass(a,b,"")}function removeClass(a,b){replaceClass(a,"",b)}function replaceClass(a,b,c){var d=b;if(c&&c.length){c=c.replace(/\s+(\S)/g,"|$1");if(d.length)d+="|";d+=c}a.className=a.className.replace(RegExp("(^|\\s+)("+d+")($|\\s+)","g"),"$1");a.className+=(a.className.length?" ":"")+b}
function matchClass(a,b){return a&&a.className.length&&a.className.match(RegExp("(^|\\s+)("+b+")($|\\s+)"))}function addEvent(a,b,c){if(a.addEventListener)a.addEventListener(b,c,false);else a.attachEvent&&a.attachEvent("on"+b,c)}function removeEvent(a,b,c){if(a.removeEventListener)a.removeEventListener(b,c,false);else a.detachEvent&&a.detachEvent("on"+b,c)}function getPageY(a){for(var b=a.offsetTop;a.offsetParent!=null;){a=a.offsetParent;b+=a.offsetTop;if(a.tagName=="BODY")break}return b}
function getPageX(a){for(var b=a.offsetLeft;a.offsetParent!=null;){a=a.offsetParent;b+=a.offsetLeft;if(a.tagName=="BODY")break}return b}function getMousePosition(a){if(a.pageX||a.pageY)var b=a.pageX,c=a.pageY;else if(a.clientX||a.clientY){b=a.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;c=a.clientY+document.body.scrollTop+document.documentElement.scrollTop}return{x:b,y:c}};
