// JavaScript Document

/**
 * Author:Yeriwei
 * Eamil:yeriwei@yeah.net
 * Describe:通用分页JS类
 *Example:------------
 *   var a=new yrwPage;
     a.init("a");
     a.exec=abc;
     a.setInfo(1,10,50,"#");
     var o={"p2":true};
     a.show(o);
     function abc(page)
     {
	    alert('这里是第'+page+'页!');
	    a.setInfo(page,11,51,"#");
     }
 *
 */
function yrwPage(){
	var on=null;
	var page=1,pages=1,recordCount=1;
	var linkUrl="#";
	var oShow=null;//表示翻页导航的对象及参数.
	var pagestr = "page";
	this.exec=null;
	this.init=function(o1){
		on=o1;
	};
	
	//设置页码
	this.setInfo=function(/*iPage,iPages,records,url,page*/){
		var args=this.setInfo.arguments;
		//var length = args.length;
		if(args[0]!=undefined) page=args[0]*1;
		if(args[1]!=undefined) pages=args[1]*1;
		if(args[2]!=undefined) recordCount=args[2]*1;
		if(args[3]!=undefined) linkUrl=args[3];
		if(args[4]!=undefined) pagestr=args[4];
	};


	//显示
	this.show=function(o1){
		oShow=o1;
		var s='<div class="ms-pages">';
		if(page==1)	{
			s+=getPageInfoHtml(0,false)+getPageInfoHtml(1,false);
			if(page<pages){
				s+=getPageInfoHtml(2,true)+getPageInfoHtml(3,true);
			}else{  
				s+=getPageInfoHtml(2,false)+getPageInfoHtml(3,false);
			}
		}else{
			s+=getPageInfoHtml(0,true)+getPageInfoHtml(1,true);
			if(page<pages){ 
				s+=getPageInfoHtml(2,true)+getPageInfoHtml(3,true);
			}else{
			  	s+=getPageInfoHtml(2,false)+getPageInfoHtml(3,false);
			}
		}
//		var s='<a href="javascript:void(0);" onclick="'+on+'.goPage(\'first\');">首页</a>&nbsp;<a href="javascript:void(0);" onclick="'+on+'.goPage(\'next\');">下一页</a>&nbsp;&nbsp;'+page+'/'+pages+'页.';
		s+='<span class="font-pages">'+page+'/'+pages+'页&nbsp;&nbsp;共'+recordCount+'条</span>';
		
		if(o1!=null){
			var tmp;
			for(o in o1){
				tmp='';//后面为空.
				if(eval('o1.'+o))tmp=getPageInputHtml();
				if(document.getElementById(o)!=null) document.getElementById(o).innerHTML=s+tmp;
			}//End for...
		}
		s+='</div>';
	};

	function getPageInfoHtml(i,isSelected){//表示翻页动作定义的序号,是否有链接.
		var s="";
		var a=new Array("first","prev","next","last");
		var t=new Array("首页","上一页","下一页","尾页");
		var url=window.location.href;
		
		if(i==0){
			linkUrl="javascript:page_seturl('1','"+pagestr+"');";
			//linkUrl = setParameter("page","1");
		}
		else if(i==1){
			linkUrl="javascript:page_seturl('"+(page*1-1)+"','"+pagestr+"');";
			//linkUrl = setParameter("page",(page*1-1));
		}
		else if(i==2){
			linkUrl="javascript:page_seturl('"+(page*1+1)+"','"+pagestr+"');";
			//linkUrl = setParameter("page",(page*1+1));
		}
		else if(i==3){
			linkUrl="javascript:page_seturl('"+page+"','"+pagestr+"');";
			//linkUrl = setParameter("page",pages);
		}
		
		if(isSelected){ 
			s='<a href="'+linkUrl+'" class="pages-link" onclick="'+on+'.goPage(\''+a[i]+'\');">'+t[i]+'</a>';
		}else{ 
			s='<span class="pages-font">'+t[i]+'</span>';
		}
		return s+'&nbsp;&nbsp;';
	};
	
	function getPageInputHtml(){
		var s='';
		var txtId='page_'+Math.random();
		s='&nbsp;<input type="text" size="3" class="pages-input" name="'+txtId+'" id="'+txtId+'"/>';
		s+='&nbsp;<img src="http://style.blogcn.com/blogcnpage/style/images/blogpages/images/go.gif" name="goPage" width="30" height="18" border="0" align="absmiddle" onclick="'+on+'.goPage(document.getElementById(\''+txtId+'\').value);"/>';
		return s;
	}
	
	//页面跳转
	this.goPage=function(action){
		switch(action){
		case "first":
			page=1;
		break;
		case "prev":
			page=(page>1)?page-1:page;
		break;
		case "next":
			page=(pages>page)?page+1:page;
		break;
		case "last":
			page=pages;
		break;
		default:
			page=action;//这里检测非数字等。			if(page==null||page.length==0){
				alert("跳转页不能为空");
				return;
			}
			if(isNumeric(page)){
				page=parseInt(page,10);
			}else{
				alert('非数字,请重新输入...');return;
			}
			if(page<1){
				page=1;
			}else if(page>pages){
			 	page=pages;
			}
			//window.location.href=setParameter("page",page);
			window.location.href=page_setPage(page,pagestr);
			
		}
		
		if(this.exec!=null){
			eval('this.exec('+page+');');
		}else{
			alert('exec handle is null!');	
		}	
		this.show(oShow);//更新导航信息.  
	};
	this.updateView=function(){this.show(oShow);} 
	
	
}

/*
  Description:判断参数是否为数字
  Input: v输入参数
*/
function isNumeric(v)
{
	if(v=='' || v==undefined) return false;
	/*var reg=/\D/g; //非数字.=[^0-9]
	return !reg.test(v);*/
	return !isNaN(parseInt(v,10));
}

function page_seturl(page,pagestr){
	window.location.href = page_setPage(page,pagestr);
}

function page_setPage(page,pagestr){
		var url = window.location.href;
		if(url.indexOf("#"+pagestr)!=-1){
			var s = url.indexOf('#'+pagestr+'=');
			var e = -1;
			var e1 = url.indexOf('&',s+2+pagestr.length);
			var e2 = url.indexOf('?',s+2+pagestr.length);
			if(e1==-1){
				e = e2
			}
			else if(e2==-1){
				e = e1
			}
			else{
				if(e1>e2) e=e2;
				else	e=e1
			}
			if(e==-1){
				return url.substring(0,s+2+pagestr.length)+page;
			}
			else{
				return url.substring(0,s+2+pagestr.length)+page+url.substring(e);
			}
		}
		else if(url.indexOf("&"+pagestr)!=-1){
			var s = url.indexOf('&'+pagestr+'=');
			var e = -1;
			var e1 = url.indexOf('&',s+2+pagestr.length);
			var e2 = url.indexOf('?',s+2+pagestr.length);
			if(e1==-1){
				e = e2
			}
			else if(e2==-1){
				e = e1
			}
			else{
				if(e1>e2) e=e2;
				else	e=e1
			}
			if(e==-1){
				return url.substring(0,s+2+pagestr.length)+page;
			}
			else{
				return url.substring(0,s+2+pagestr.length)+page+url.substring(e);
			}
		}
		else{
			
			if(url.indexOf("#")==-1){
				return url+"#"+pagestr+"="+page;
			}
			else{
				return url+"&"+pagestr+"="+page;
			}
		}
		
		/**
		if(url.indexOf("#"+pagestr)==-1){
			if(url.indexOf("#")==-1){
				return url+"#"+pagestr+"="+page;
			}
			else{
				return url+"&"+pagestr+"="+page;
			}
		}
		else{
			var s = url.indexOf('#'+pagestr+'=');
			var e = -1;
			var e1 = url.indexOf('&',s+6);
			var e2 = url.indexOf('?',s+6);
			if(e1==-1){
				e = e2
			}
			else if(e2==-1){
				e = e1
			}
			else{
				if(e1>e2) e=e2;
				else	e=e1
			}
			if(e==-1){
				return url.substring(0,s+6)+page;
			}
			else{
				return url.substring(0,s+6)+page+url.substring(e);
			}
		}**/
	
	}



