//HTML Outline对象
var m_objSrcContent = null;
//HTML Column对象
var m_arSingleRec = null;
//获取分页参数
var m_nPageSize   = 8; //常量每页条数
var m_nRecSize   = 1; //常量每行条数


//设定XML的检索方式
//DocumentsDataSrc.XMLDocument.setProperty("SelectionLanguage", "XPath"); 
//检索所有的节点
var m_arNodes = null;

//记录数
var m_nRecCount   = 0;
//总页数
var m_nPageCount = 0; 
//页码文字输出区
var CP = document.getElementById("CP"); 

//初始化各种分页变量
function initPage(){
	m_objSrcContent = document.all("OutlineContent");
	if(m_objSrcContent == null){
		alert( "没有定义Outline区域！分页代码发生异常！" );
		return false;
	}
	m_arSingleRec = m_objSrcContent.all("ColumnContent");
	if(m_arSingleRec == null){
		//alert( "没有定义Column区域！分页代码发生异常！" );
		//return false;
	}
	//获取分页参数
	m_nPageSize   = 8; //常量每页条数
	if(m_objSrcContent.PageSize && !isNaN(m_objSrcContent.PageSize)){
		m_nPageSize = parseInt(m_objSrcContent.PageSize);
	}
	m_nRecSize   = 1; //常量每行条数
	if(m_arSingleRec != null && m_arSingleRec.length)m_nRecSize = m_arSingleRec.length;

	//提取数据
	//默认提取所有的数据
	var sPath = "//D";
	m_arNodes = DocumentsDataSrc.XMLDocument.selectNodes(sPath);
	
	m_nRecCount   = m_arNodes.length;
	m_nPageCount = 0; //计算总页数
	if(m_nRecCount%m_nPageSize>0)
		m_nPageCount = (m_nRecCount - (m_nRecCount%m_nPageSize))/m_nPageSize +1;
	else
		m_nPageCount = m_nRecCount/m_nPageSize; //取得当前页对象并

	//默认定位到第一页
	toPage(1);

	//将标志位设回
	m_bFirst  = false;
}

//===========getCurrPage(_currentPage)规范跳转页码函数;_currentPage 跳转页码输入值===
function getCurrPage(_currentPage){
	var cPage =1;
	if( _currentPage<=0 || _currentPage=="")
		cPage =1;
	else if(_currentPage>m_nPageCount)
		cPage = m_nPageCount;
	else
		cPage = _currentPage;
	return cPage;
}

//===============goto()直接跳转函数=============================================
function goto(){
		toPage(CP.value);
}

//===============toPage(_pageNo)跳转函数;_pageNo要跳转的页号====================
function toPage(_pageNo){
	if(m_nRecCount <= 0)return false;
	//删除原有代码
	//removeAllOldNodes();
	
	var cP = getCurrPage(_pageNo);
	var startPos = cP*m_nPageSize - m_nPageSize;
	var endPos = 0;
	if(cP*m_nPageSize>m_nRecCount)
		endPos=m_nRecCount;
	else
		endPos = cP*m_nPageSize;

	var nOutlineCount = 0;
	for(var i=startPos; i<endPos; i++){
		var nTemp = createItemHTML(i, endPos, nOutlineCount);
		if(nTemp <= 0)break;
		i = i + nTemp;		
		i--;
		nOutlineCount++;
	}

	//异常剩下的元素
	for( ;!m_bFirst && nOutlineCount<m_nPageSize; nOutlineCount++)
	{
		if(m_arOutLine.length <= nOutlineCount)break;
		m_arOutLine[nOutlineCount].style.display = "none";
	}
	CP.value = cP;
	showPageLineNum();
}

//===========showPageLineNum()页面显示状态条函数==================
function showPageLineNum(){
	var pL = "";
	var nL = "";
	if(CP.value!=1){
		pL+="<a href=# class=cn onclick=\"toPage(1)\">[首页]</a>&nbsp;";
		pL+="<a href=# class=cn onclick=\"toPage("+(CP.value-1)+")\">[上一页]</a>&nbsp;";
	}
	else{
		pL+="[首页]&nbsp;";
		pL+="[上一页]&nbsp;";
	}
	for(var pageN=1;pageN<=m_nPageCount;pageN++){
		if(pageN==CP.value){
		nL+="<font color=red><b>"+pageN+"</b></font>&nbsp;";
		}
	//	else
	//	pL += "<a href=# onclick=\"toPage("+pageN+")\">"+pageN+"</a>&nbsp;";
	}
	if(CP.value<m_nPageCount){
		pL+="<a href=# class=cn onclick=\"toPage("+((CP.value)*1+1)+")\">[下一页]</a>&nbsp;";
		pL+="<a href=# class=cn onclick=\"toPage("+m_nPageCount+")\">[尾页]</a>&nbsp;";
	}
	else{
		pL+="[下一页]&nbsp;";
		pL+="[尾页]&nbsp;";
	}

	pL += "当前第 <font color=red><b>"+nL+"</b></font> 页  共 <font color=red><b>"+m_nPageCount+"</b></font> 页 ";
	var showPageLine = document.getElementsByName("pl");
	for(var pls=0;pls<showPageLine.length;pls++){
	showPageLine[pls].innerHTML = pL;}
}

//删除原有的节点
function removeAllOldNodes(){
	var arTemp = document.all("OutlineClone");
	if(!arTemp)return false;

	if(arTemp.length){
		for(var i=arTemp.length-1; i>=0; i--){
			arTemp[i].removeNode(true);
		}
	}else{
		arTemp.removeNode(true);
	}
	return true;
}

var m_bFirst    = true;
var m_arOutLine = new Array();
/**
  * 复制分页节点
  *	
**/
function createItemHTML(_nCurrIndex, _nEndIndex, _nOutlineIndex){
	if(m_arNodes.length < _nCurrIndex)return 0;
	
	var objContent = null;
	if(m_bFirst){//创建节点
		//复制Outline节点
		objContent = m_objSrcContent.cloneNode(true);
		//设置ID
		objContent.id = "OutlineClone";	
		m_arOutLine[m_arOutLine.length] = objContent;
	}
	else
	{
		if(_nOutlineIndex >= m_arOutLine.length)
		{
			alert("算法有误！");
			return;
		}
		objContent = m_arOutLine[_nOutlineIndex];
	}
	
	//设置Display
	objContent.style.display = "";
	//修改ID
	var arSingleRec = objContent.all("ColumnContent");
	if(arSingleRec==null)arSingleRec = objContent
	var recCount = 1;
	if(arSingleRec.length)recCount = arSingleRec.length;
	var i = 0;
	for(i=0; i<recCount; i++){
		//判断当前索引是否有效
		if(m_arNodes.length <= (_nCurrIndex+i) || _nCurrIndex+i >= _nEndIndex)break;		


		//获取当前的XML节点
		var xmlNode = m_arNodes[_nCurrIndex+i];
		//遍历所有属性子节点，从XML中提取数据
		var objSingleRec = null;
		if(recCount>1)objSingleRec = arSingleRec[i];
		else objSingleRec = arSingleRec;
		var arAllField = objSingleRec.all;
		for(var j=0; j<arAllField.length; j++){
			var sFieldName = arAllField[j].FieldName;
			var sTagName = arAllField[j].tagName;
			
			if(sFieldName){
				var sValue = "";
				//获取属性节点
				var xmlNodeTemp = xmlNode.selectSingleNode(sFieldName);
				if(xmlNodeTemp)sValue = xmlNodeTemp.text;

				switch(sTagName){//暂时只支持四种HTML置标定义数据源
					case "A":
						arAllField[j].href = sValue;
						break;
					case "SPAN":
					case "TD":
						arAllField[j].innerHTML = sValue;
						break;
					case "IMG":
						arAllField[j].src = sValue;
						break;
					default:
						break;
				}
			}
		}
	}
	//将没有填充内容的Column隐藏
	for(; arSingleRec.length && i<arSingleRec.length; i++)arSingleRec[i].style.display = "none";

	

	if(m_bFirst)m_objSrcContent.insertAdjacentElement("beforeBegin", objContent);
	return i;
}

