// 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;//表示翻页导航的对象及参数.
	this.exec=null;
	this.init=function(o1)
	{
		on=o1;
	};
	this.setInfo=function(/*iPage,iPages,records,url*/)
	{
		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];
	};
	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 = setParameter("page","1");
		}
		else if(i==1){
			linkUrl = setParameter("page",(page*1-1));
		}
		else if(i==2){
			linkUrl = setParameter("page",(page*1+1));
		}
		else if(i==3){
			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="/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);
		}
		
		//setParameter('page',page);
		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));
}