﻿/* ajax Pager */
//parentObj--父节点,dataHref--数据提供链接,pageRowNum--每页最大行数
function Pager(parentObj,dataHref,pageRowNum,prefix)
{
	parentObj.innerHTML="";
	this.parentObj=parentObj;
	this.dataHref=dataHref;
	this.pageRowNum=pageRowNum;
	
	//页面控件
	var pagerObj=document.createElement("div");
	pagerObj.className="pager";
	this.parentObj.appendChild(pagerObj);
	//数据控件
	var pagerDataObj=document.createElement("div");
	pagerDataObj.id="pagerDataId";
	if(prefix) pagerDataObj.id=prefix+"pagerDataId";
	pagerDataObj.className="pagerData";
	pagerObj.appendChild(pagerDataObj);
	//分页导航
	var pagerNavObj=document.createElement("div");
	pagerNavObj.id="pagerNavObj";
	if(prefix) pagerNavObj.id=prefix+"pagerNavObj";
	pagerNavObj.className="pagerNav";
	pagerObj.appendChild(pagerNavObj);
	//存储数据总页数
	var pagerSum=document.createElement("div");
	pagerSum.id="pagerSum";
	if(prefix) pagerSum.id=prefix+"pagerSum";
	pagerSum.style.display="none";
	pagerObj.appendChild(pagerSum);
	//存储数据类型
	var dataTypeObj=document.createElement("div");
	dataTypeObj.id="pageDataType";
	if(prefix) dataTypeObj.id=prefix+"pageDataType";
	dataTypeObj.style.display="none";
	pagerObj.appendChild(dataTypeObj);
	
	var href=this.dataHref,pNO=1;
	if(href.indexOf("?")==-1){
		href+="?pRN="+this.pageRowNum;
	}else{ 
		href+="&pRN="+this.pageRowNum;
	}
	//存储href
	var pagerHrefObj=document.createElement("div");
	pagerHrefObj.id="pagerHrefId";
	if(prefix) pagerHrefObj.id=prefix+"pagerHrefId";
	pagerHrefObj.style.display="none";
	pagerHrefObj.value=href;
	pagerObj.appendChild(pagerHrefObj);
	
	this.Show=function(){
		//显示页面导航
		showNav(this.pageRowNum);
	};
	//页面导航
	function showNav(pageRowNum)
	{
		try
		{
			Ajax("post",href,buildNav);
		}
		catch($e)
		{
			showError($e);
		}
		function buildNav(xmlHttp)
		{
			if(xmlHttp.readyState==4)
			{
				try
				{
					//数据总数,页数
					var sumCount=0;
					try{sumCount=parseInt(xmlHttp.responseText)}catch(e){}
					var pageCount=1;
					if(sumCount%pageRowNum==0)
					{
						pageCount=parseInt(sumCount/pageRowNum);
					}
					else
					{
						pageCount=parseInt(sumCount/pageRowNum+1);
					}
					if(pageCount==0) pageCount=1;
					pagerSum.setAttribute("value",pageCount);
					/*//首页
					createFirst(pagerNavObj,prefix);
					//每页
					var pageSum=10; //最大显示导航条数
					var pHalf=pageSum/2;
					if(pageCount<=pHalf)
					{
						for(var i=1;i<=pageCount;i++){
							createGoNO(pagerNavObj,i,prefix);
						}
					}else{
						for(var i=1;i<=pHalf;i++){
							createGoNO(pagerNavObj,i,prefix);
						}
						createGoNO(pagerNavObj,pHalf+1,prefix,"...");
					}
					//尾页
					createLast(pagerNavObj,pageCount,prefix);*/
				}catch(e){}
				//显示默认数据
				if(prefix){
					showData(1,prefix);
				}else{
					showData(1);
				}
			}
		}
	}
}
//创建First方法
function createFirst(parentObj,prefix)
{
	var goFirst=document.createElement("a");
	goFirst.id="pagerGoFirst";
	if(prefix){
		goFirst.id=prefix+"pagerGoFirst";
		goFirst.href="javascript:showData(1,'"+prefix+"')";
	}else{
		goFirst.id="pagerGoFirst";
		goFirst.href="javascript:showData(1)";
	}
	var goFirstText=document.createElement("span");
	goFirstText.innerHTML="<font face=webdings>9</font>";
	goFirst.appendChild(goFirstText);
	parentObj.appendChild(goFirst);
}
//创建Last方法
function createLast(parentObj,pageCount,prefix)
{
	var goLast=document.createElement("a");
	goLast.id="pagerGoLast";
	if(prefix){
		goLast.id=prefix+"pagerGoLast";
		goLast.href="javascript:showData("+pageCount+",'"+prefix+"')";
	}else{
		goLast.id="pagerGoLast";
		goLast.href="javascript:showData("+pageCount+")";
	}
	goLast.setAttribute("value",pageCount);
	var goLastText=document.createElement("span");
	goLastText.innerHTML="<font face=webdings>:</font>";
	goLast.appendChild(goLastText);
	parentObj.appendChild(goLast);
}
//创建goNO方法
function createGoNO(parentObj,i,prefix,showStr)
{
	var goNO=document.createElement("a");
	if(prefix){
		goNO.href="javascript:showData("+i+",'"+prefix+"')";
	}else{
		goNO.href="javascript:showData("+i+")";
	}
	var spanGoNO=document.createElement("span");
	spanGoNO.id="goNO_"+i;
	if(prefix) spanGoNO.id=prefix+"goNO_"+i;
	spanGoNO.innerText="["+i+"]";
	if(showStr) spanGoNO.innerText=showStr;
	goNO.appendChild(spanGoNO);
	parentObj.appendChild(goNO);
}
//显示数据信息
function showData(pageNO,prefix)
{
	var pagerNavObjId="pagerNavObj";
	if(prefix) pagerNavObjId=prefix+"pagerNavObj";
	var pagerNavObj=$(pagerNavObjId);
	//清空导航
	pagerNavObj.innerHTML="";
	/* 分段显示导航 */
	var pageSum=10; //最大显示导航条数
	var pHalf=pageSum/2;
	//获得pageCount
	var pageCount;
	if(prefix){
		pageCount=$(prefix+"pagerSum").value;
	}else{
		pageCount=$("pagerSum").value;
	}
	createFirst(pagerNavObj,prefix);
	if(pageCount<=pHalf)
	{
		for(var i=1;i<=pageCount;i++)
		{
			createGoNO(pagerNavObj,i,prefix);
		}
	}else{
		if(pageNO<=pHalf){
			for(var i=1;i<=pHalf;i++)
			{
				createGoNO(pagerNavObj,i,prefix);
			}
			createGoNO(pagerNavObj,pHalf+1,prefix,"...");
		}else{
			createGoNO(pagerNavObj,pageNO-pHalf,prefix,"...");
			for(var j=pageNO-pHalf+1;j<=pageNO;j++)
			{
				createGoNO(pagerNavObj,j,prefix);
			}
			for(var k=pageNO+1;k<pageNO+pHalf && k<=pageCount;k++)
			{
				createGoNO(pagerNavObj,k,prefix);
			}
			if(k<pageCount) createGoNO(pagerNavObj,k,prefix,"...");
		}
	}
	createLast(pagerNavObj,pageCount,prefix);
	try{
		var goNO_id="goNO_";
		if(prefix) goNO_id=prefix+"goNO_";
		$(goNO_id+pageNO).className="goNO";
	}catch(e){}
	//end page show
	var sendHref="";
	var pagerHrefId="pagerHrefId";
	if(prefix) pagerHrefId=prefix+"pagerHrefId";
	var hrefStore=$(pagerHrefId).value;
	if(hrefStore.indexOf("?")==-1){
		sendHref=hrefStore+"?pNO="+pageNO;
	}else{
		sendHref=hrefStore+"&pNO="+pageNO;
	}
	sendHref=sendHref+"&rid="+Math.random();
	try
	{
		Ajax("post",sendHref,buildData);
	}
	catch($e)
	{
		showError($e);
	}
	function buildData(xmlHttp)
	{
		if(xmlHttp.readyState==4){
			var pagerDataId="pagerDataId";
			if(prefix) pagerDataId=prefix+"pagerDataId";
			$(pagerDataId).innerHTML=xmlHttp.responseText;
		}else{
			var pagerDataId="pagerDataId";
			if(prefix) pagerDataId=prefix+"pagerDataId";
			$(pagerDataId).innerHTML="<img src='/style/images/ico/loading.gif' align=absmiddle />数据加载中...";
		}
	}
}
//提示信息
function showInfo(str)
{
	alert(showInfo);
}
function showError(str)
{
	alert(str);
}
