/*
	Paginator 3000
	- idea by ecto (ecto.ru)
	- coded by karaboz (karaboz.ru)
*/
var Paginator=function(A,E,B,D,C){if(!document.getElementById(A)||!E||!B){return false;}this.inputData={paginatorHolderId:A,pagesTotal:E,pagesSpan:B<E?B:E,pageCurrent:D,baseUrl:C?C:"/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];var A=this.html.table.getElementsByTagName("tr")[0];this.html.tdsPages=A.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];if(this.inputData.pagesSpan==this.inputData.pagesTotal){addClass(this.html.holder,"fullsize");}};Paginator.prototype.makePagesTableHtml=function(){var C=(100/this.inputData.pagesSpan)+"%";var B='<table width="100%"><tr>';for(var A=1;A<=this.inputData.pagesSpan;A++){B+='<td width="'+C+'"></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.html.scrollThumb.xPosMax;this.html.scrollThumb.widthActual;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.html.pageCurrentMark.widthActual;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(){if(this.html.pageCurrentMark.widthActual<this.html.pageCurrentMark.offsetWidth){this.html.pageCurrentMark.style.left=(this.inputData.pageCurrent-1)/this.inputData.pagesTotal*this.html.table.offsetWidth-this.html.pageCurrentMark.offsetWidth/2+"px";}else{this.html.pageCurrentMark.style.left=(this.inputData.pageCurrent-1)/this.inputData.pagesTotal*this.html.table.offsetWidth+"px";}};Paginator.prototype.initEvents=function(){var A=this;this.html.scrollThumb.onmousedown=function(C){if(!C){var C=window.event;}C.cancelBubble=true;if(C.stopPropagation){C.stopPropagation();}var B=getMousePosition(C).x-this.xPos;document.onmousemove=function(D){if(!D){var D=window.event;}A.html.scrollThumb.xPos=getMousePosition(D).x-B;A.moveScrollThumb();A.drawPages();};document.onmouseup=function(){document.onmousemove=null;A.enableSelection();};A.disableSelection();};this.html.scrollBar.onmousedown=function(B){if(!B){var B=window.event;}if(matchClass(A.paginatorBox,"fullsize")){return ;}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=this.html.scrollThumb.xPos/(this.html.table.offsetWidth);var E=Math.round(A*this.inputData.pagesTotal);var C="";if(E<1){E=1;this.html.scrollThumb.xPos=0;this.moveScrollThumb();}else{if(E>=this.inputData.pagesTotal-this.inputData.pagesSpan){E=this.inputData.pagesTotal-this.inputData.pagesSpan+1;this.html.scrollThumb.xPos=this.html.table.offsetWidth-this.html.scrollThumb.offsetWidth;this.moveScrollThumb();}}for(var B=0;B<this.html.tdsPages.length;B++){var D=E+B;if(D==this.inputData.pageCurrent){C="<span><strong>"+D+"</strong></span>";}else{C="<span><a href='"+this.inputData.baseUrl+D+"'>"+D+"</a></span>";}this.html.tdsPages[B].innerHTML=C;}};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(D,C,B){var A=D.getElementsByTagName(C);if(!B){return A;}var F=[];for(var E=0;E<A.length;E++){if(matchClass(A[E],B)){F[F.length]=A[E];}}return F;}function addClass(B,A){replaceClass(B,A,"");}function removeClass(B,A){replaceClass(B,"",A);}function replaceClass(D,A,C){var B=A;if(C&&C.length){C=C.replace(/\s+(\S)/g,"|$1");if(B.length){B+="|";}B+=C;}D.className=D.className.replace(new RegExp("(^|\\s+)("+B+")($|\\s+)","g"),"$1");D.className+=((D.className.length)?" ":"")+A;}function matchClass(B,A){return(B&&B.className.length&&B.className.match(new RegExp("(^|\\s+)("+A+")($|\\s+)")));}function addEvent(A,C,B){if(A.addEventListener){A.addEventListener(C,B,false);}else{if(A.attachEvent){A.attachEvent("on"+C,B);}}}function removeEvent(A,C,B){if(A.removeEventListener){A.removeEventListener(C,B,false);}else{if(A.detachEvent){A.detachEvent("on"+C,B);}}}function getPageY(A){var B=A.offsetTop;while(A.offsetParent!=null){A=A.offsetParent;B+=A.offsetTop;if(A.tagName=="BODY"){break;}}return B;}function getPageX(A){var B=A.offsetLeft;while(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 C=A.pageX;var B=A.pageY;}else{if(A.clientX||A.clientY){var C=A.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;var B=A.clientY+document.body.scrollTop+document.documentElement.scrollTop;}}return{x:C,y:B};}
