﻿CPageNavBar=function(){	
		var aryOutHtml=new Array(2);
		
		var _RecordCount=0;
		var _RecordFrom=0;
		var _RecordTo=0;
		var _PageCount=0;
		var _Page=0;
		var _PageSize=20;
		var _PageTag="Page";
		var _PageNumberSize=10;
		var _NavString="第一页|上一页|下一页|最后页";		
				
		this.RecordCount=function(){
				return _RecordCount;
		};
		this.setRecordCount=function(n){
				_RecordCount=n;
		};
		
		this.RecordFrom=function(){
				return _RecordFrom;
		};
		
		this.RecordTo=function(){
				return _RecordTo;
		};
		
		this.PageCount=function(){
				return _PageCount;
		};
		
		this.Page=function(){
				return _Page;
		};
		this.setPage=function(n){
				_Page=n<1 ? 1 : n;
		};
		
		this.PageSize=function(){
				return _PageSize;
		};
		this.setPageSize=function(n){
				_PageSize=n<1 ? 1 : n;
		};
		
		this.PageTag=function(){
				return _PageTag;
		};
		this.setPageTag=function(s){
				_PageTag=Trim(s);
		};
		
		this.PageNumberSize=function(){
				return _PageNumberSize;
		};
		this.setPageNumberSize=function(n){
				_PageNumberSize=n<1 ? 1 : n;
		};		
		
		this.NavString=function(){
				return _NavString;
		};
		this.setNavString=function(s){
				s=Trim(s);
				if(s.length<1){
					_NavString="第一页|上一页|下一页|最后页";
					return;
				}
				
				var aryNavString=s.split("|");
				var ary=new Array(4);
				var i;
				for(i=0;i<4;i++){
					if(aryNavString.length>=i+1)ary[i]=Trim(aryNavString[i]);
				}
				aryNavString=null;
				
				if((ary[0]).length<1)ary[0]="<<";
				if((ary[1]).length<1)ary[1]="..";
				if((ary[2]).length<1)ary[2]="..";
				if((ary[3]).length<1)ary[3]=">>";
				
				_NavString=ary.join("|");
				ary=null;
		};		
		
		function Trim(input){
			return (input.replace(/^\s*/, '')).replace(/\s*$/, '');
		};
		
		function Div(n1,n2){
			return Math.floor(n1/n2);			
		}
		
		function ClearQueryString(){
			var Url=Trim((window.location.href));					
			var n=Url.indexOf("?");	
			if(n>=0){
				Url=Url.substring(n+1,Url.length);
				var aryUrl=Url.split("&");
				var i;
				Url="";
				for(i=0;i<aryUrl.length;i++){
					if((aryUrl[i].substring(0,(_PageTag+"=").length)).toLowerCase()!=(_PageTag+"=").toLowerCase()){				
						Url+=aryUrl[i]+"&";
					}
				}
				aryUrl=null;
				if(Url.substr(Url.length-1,1)=="&")Url=Url.substring(0,Url.length-1);
			}
			else{
				Url="";
			}
			
			if(Url.length==0){
				Url=_PageTag+"=";
			}
			else{
				Url+="&"+_PageTag+"=";				
			}			
			return Url;
		};
		
		function GetPage(){
			var returnVal=0;
			
			var Url="";			
			var aryUrl="";				
			var n;
			
			Url=Trim((window.location.href));	
			aryUrl=Url.split("?");			
			if(aryUrl.length<2){
				aryUrl=null;
				return returnVal;
			}
			Url=aryUrl[1];
			
			aryUrl=Url.split("&");
			if(aryUrl.length<1){
				Url=aryUrl[0];
				if((Url.substring(0,(_PageTag+"=").length)).toLowerCase()==(_PageTag+"=").toLowerCase()){
					aryUrl=Url.split("=");
					n=new Number(aryUrl[1]);
					if(!isNaN(n))returnVal=n;
					n=null;
				}
				aryUrl=null;
				return returnVal;
			}
				
			var i=0;
			for(i=0;i<aryUrl.length;i++){
				if((aryUrl[i].substring(0,(_PageTag+"=").length)).toLowerCase()==(_PageTag+"=").toLowerCase()){								
					Url=aryUrl[i];
					aryUrl=Url.split("=");
					n=new Number(aryUrl[1]);
					if(!isNaN(n))returnVal=n;
					n=null;
					break;
				}
			}
			
			aryUrl=null;
			return returnVal;
		}
		
		this.Dispose=function(){
			aryOutHtml=null;
		};
		
		this.Build=function(EnableLinkStyle,DisableLinkStyle){
				_RecordFrom=0;
				_RecordTo=0;
				
				if(_RecordCount==0){
					_PageCount=0;
					_Page=0;					
				}else{
					_PageCount=Div(_RecordCount,_PageSize);
					_Page=GetPage();					
					
					if(_PageCount>0 && (_RecordCount % _PageSize!=0)){
							_PageCount+=1;
					}
					if(_PageCount<1)_PageCount=1;					
					if(_Page<1)_Page=1;
					if(_Page>_PageCount)_Page=_PageCount;
					
					_RecordFrom=(_Page-1)*_PageSize+1;
					_RecordTo  =_RecordFrom+_PageSize-1;
					if(_RecordTo>_RecordCount)_RecordTo=_RecordCount;
				}
				
				var i;
				for(i=0;i<aryOutHtml.length;i++){
					aryOutHtml[i]="";
				}
				
				var aryNavString=_NavString.split("|");					
				var qs=ClearQueryString();
				Build_1(EnableLinkStyle,DisableLinkStyle,aryNavString,qs);
				Build_2(EnableLinkStyle,DisableLinkStyle,aryNavString,qs);
				aryNavString=null;				
		}
		
		function Build_1(EnableLinkStyle,DisableLinkStyle,aryNavString,qs){
			aryOutHtml[0] ="<table border=0><tr>";
			if(_PageCount<=1){
				aryOutHtml[0]+="<td><span style='" + DisableLinkStyle + "'>"  + aryNavString[0] + "</span></td>";
				aryOutHtml[0]+="<td><span style='" + DisableLinkStyle + "'>"  + aryNavString[1] + "</span></td>"	;		
				aryOutHtml[0]+="<td><span style='" + DisableLinkStyle + "'>[" + _PageCount + "]</span></td>";		
				aryOutHtml[0]+="<td><span style='" + DisableLinkStyle + "'>"  + aryNavString[2] + "</span></td>";
				aryOutHtml[0]+="<td><span style='" + DisableLinkStyle + "'>"  + aryNavString[3] + "</span></td>";
			}
			else{				
				if(_PageNumberSize<1){//不限制页码数量
					for(i=1;i<=_PageCount;i++){
						if(i!=_Page){
							aryOutHtml[0]=aryOutHtml[0] + "<td><a href='?" + qs + i + "' style='" + EnableLinkStyle + "'>" + i + "</a></td>";
						}else{
							aryOutHtml[0]=aryOutHtml[0] + "<td><span " + DisableLinkStyle + ">" + "[" + i + "]" + "</span></td>";
						}
					}
				}
				else{//限制页码数量,分段显示页码
					//先计算页码一共有多少页
					var iPageNumbers=Div(_PageCount,_PageNumberSize);	
					if(_PageCount % _PageNumberSize!=0){
						iPageNumbers+=1;
					}
					if(iPageNumbers<1)iPageNumbers=1;
					//'计算当前页码在页码页的第几页
					var iPageNumbersPage=Div(_Page,_PageNumberSize);
					if(_Page % _PageNumberSize !=0){
						iPageNumbersPage+=1;
					}	
					if(iPageNumbersPage<1)iPageNumbersPage=1;
					if(iPageNumbersPage>iPageNumbers)iPageNumbersPage=iPageNumbers;
					/////////////////////////////////////////////////////////////////
					
					var s=0,e=0;
					e=iPageNumbersPage*_PageNumberSize;
					s=e-_PageNumberSize+1;
					if(s<1){
						s=1;
						e=s+_PageNumberSize-1;
					}
					if(e>_PageCount)e=_PageCount;					
					
					
					if(_Page<=1){//在第一页
						aryOutHtml[0]+="<td><span style='" + DisableLinkStyle + "'>" + aryNavString[0] + "</span></td>";
						aryOutHtml[0]+="<td><span style='" + DisableLinkStyle + "'>" + aryNavString[1] + "</span></td>";
					}
					else{//在第一页后
						aryOutHtml[0]+="<td><a href='?" + qs + "1' style='" + EnableLinkStyle + "'>" + aryNavString[0] + "</a></td>";
						aryOutHtml[0]+="<td><a href='?" + qs + (_Page-1).toString() + "' style='" + EnableLinkStyle + "'>" + aryNavString[1] + "</a></td>";
					}
					
					var i;
					for(i=s;i<=e;i++){
						if(i!=_Page){
							aryOutHtml[0]+="<td><a href='?" + qs + i.toString() + "' style=" + EnableLinkStyle + ">[" + i.toString() + "]</a></td>";
						}else{
							aryOutHtml[0]+="<td><span style=" + DisableLinkStyle + ">[" + i.toString() + "]</span></td>";
						}
					}
						
					if(_Page<_PageCount){//在最后页前
						aryOutHtml[0]+="<td><a href='?" + qs + (_Page+1).toString()  + "' style='" + EnableLinkStyle + "'>" + aryNavString[2] + "</a></td>";
						aryOutHtml[0]+="<td><a href='?" + qs + _PageCount.toString() + "' style='" + EnableLinkStyle + "'>" + aryNavString[3] + "</a></td>";
					}
					else{//在最后页
						aryOutHtml[0]+="<td><span style='" + DisableLinkStyle + "'>" + aryNavString[2] + "</span></td>";
						aryOutHtml[0]+="<td><span style='" + DisableLinkStyle + "'>" + aryNavString[3] + "</span></td>";
					}
				}
			}
			aryOutHtml[0]+="</tr></table>";	
		}
		
		function Build_2(EnableLinkStyle,DisableLinkStyle,aryNavString,qs){
			aryOutHtml[1] ="<table border=0><tr>";
			if(_PageCount<=1){
				aryOutHtml[1]+="<td><span style='" + DisableLinkStyle + "'>"  + aryNavString[0] + "</span></td>";
				aryOutHtml[1]+="<td><span style='" + DisableLinkStyle + "'>"  + aryNavString[1] + "</span></td>";					
				aryOutHtml[1]+="<td><span style='" + DisableLinkStyle + "'>"  + aryNavString[2] + "</span></td>";
				aryOutHtml[1]+="<td><span style='" + DisableLinkStyle + "'>"  + aryNavString[3] + "</span></td>";
			}else{
				if(_Page<=1){//在第一页
					aryOutHtml[1]+="<td><span style='" + DisableLinkStyle + "'>" + aryNavString[0] + "</span></td>";
					aryOutHtml[1]+="<td><span style='" + DisableLinkStyle + "'>" + aryNavString[1] + "</span></td>";
				}
				else{//在第一页后
					aryOutHtml[1]+="<td><a href='?" + qs + "1' style='" + EnableLinkStyle + "'>" + aryNavString[0] + "</a></td>";
					aryOutHtml[1]+="<td><a href='?" + qs + (_Page-1).toString() + "' style='" + EnableLinkStyle + "'>" + aryNavString[1] + "</a></td>";
				}
				
				if(_Page<_PageCount){//在最后页前
					aryOutHtml[1]+="<td><a href='?" + qs + (_Page+1).toString() + "' style='" + EnableLinkStyle + "'>" + aryNavString[2] + "</a></td>";
					aryOutHtml[1]+="<td><a href='?" + qs + _PageCount.toString() + "' style='" + EnableLinkStyle + "'>" + aryNavString[3] + "</a></td>";
				}
				else{//在最后页
					aryOutHtml[1]+="<td><span style='" + DisableLinkStyle + "'>" + aryNavString[2] + "</span></td>";
					aryOutHtml[1]+="<td><span style='" + DisableLinkStyle + "'>" + aryNavString[3] + "</span></td>";
				}				
			}
			aryOutHtml[1]+="</tr></table>";	
		}
		
		this.OutBar=function(n){			
			return aryOutHtml[n];
		};
		
};
