﻿FPage = function(xml, xsl, intR, div_show, div_page, div_count, div_record, div_current){
	this._xml = xml;
	this._xsl = xsl;
	this._intR = intR;
	this.ctl_Show = div_show;
	this.ctl_Page = div_page;
	this.ctl_Count = div_count;
	this.ctl_Record = div_record;
	this.ctl_Current = div_current;
	this.IsSetIndex = false;
	this._intC = 1;
	this.FE_Index = 0;
	this.IsSetPage = true;
	this.IsSetFirst = true;
	this.IsSetPrev = true;
	this.IsSetNext = true;
	this.IsSetLast = true;
	this.objName = 'Fobj';

	this.SetXslt = function(){
		this._xsl.selectNodes("//xsl:for-each/@select")[this.FE_Index].value = "./*[position() < "+(this._intR+1)+" and position() > 0]";
		this.Transform();
		this.setPageCount();
	}
	
	this.Transform = function(){
		if(this.IsSetIndex) this._xsl.selectSingleNode("//xsl:param[@name='index']").text = this._intC;
		document.getElementById(this.ctl_Show).innerHTML = this._xml.transformNode(this._xsl);
		document.getElementById(this.ctl_Page).value = this._intR;
	}
	
	this.Redisplay = function(intPage){
		var strDisplay;
		var intPageCount;
		var intRecordCount;
		
		//保存状态信息
		intPageCount = document.getElementById(this.ctl_Count).innerHTML;
		intRecordCount = document.getElementById(this.ctl_Record).innerHTML;
		this.Transform();
		//显示状态信息
		document.getElementById(this.ctl_Count).innerHTML = intPageCount;
		document.getElementById(this.ctl_Record).innerHTML = intRecordCount;
		document.getElementById(this.ctl_Current).innerHTML = intPage;
	}

	//重新排序和显示
	this.Sort = function(strField){
		var sortField;
		var sortOrderAttribute;
		
		//得到排序属性值
		var sortField = this._xsl.documentElement.selectSingleNode("//xsl:sort/@select"); 
		var sortOrderAttribute = this._xsl.documentElement.selectSingleNode("//xsl:sort/@order");

		//改变排序的方式
		if (sortField.value==strField || sortField.value=="./*[0]"){
			if (sortOrderAttribute.value=="descending"){
				sortOrderAttribute.value = "ascending";
			}
			else{
				sortOrderAttribute.value = "descending";
			}
		}
		else{
			sortField.value = strField;
			sortOrderAttribute.value = "ascending";
		}

		var sortField = Nothing;
		var sortOrderAttribute = Nothing;

		Redisplay(document.getElementById(this.ctl_Current).innerHTML);
	}
	
	this.setRecordsPerPage = function(){
		if (isNumber(document.getElementById(this.ctl_Page).value)){
			this._intR = Number(document.getElementById(this.ctl_Page).value);
			SetXslt(); 
		}
	}
	
	this.setPageCount = function(){
		var intTotalRecords;
		intTotalRecords = this.getNumberOfPages(intTotalRecords);

		if (Number(intTotalRecords)==0){
			document.getElementById(this.ctl_Count).innerHTML = "1";
		}	
		else{ 
			document.getElementById(this.ctl_Count).innerHTML = this.getNumberOfPages(intTotalRecords);
		}
		document.getElementById(this.ctl_Record).innerHTML = this._xml.selectNodes("/*/*").length;
		document.getElementById(this.ctl_Current).innerHTML = "1";
	}
	
	//计算总页数和总记录数
	this.getNumberOfPages = function(intTotalRecords){
		
		var intPages
		intTotalRecords = this._xml.selectNodes("/*/*").length; 
		intPages = intTotalRecords/this._intR ;
		
		if (intPages >= 1){
			if (intPages.toString().indexOf('.') > 0){
				intPages = Number(intPages.toString().substring(0, intPages.toString().indexOf('.')))+1;
			}
		}
		else{
			intPages = 0;
		}

		return intPages;
	}

	//“下一页”的处理
	this.NextPage = function(intPage){
		var strDisplay;
		var strDateRange;
		if ((Number(intPage)*this._intR)<this._xml.selectNodes("/*/*").length){
			intPage = Number(intPage) + 1;
			this._intC = intPage;
			if (this.IsSetPage){
				this._xsl.selectNodes("//@HREF")[0].value = "javascript:"+this.objName+".FirstPage()";
				this._xsl.selectNodes("//@HREF")[1].value = "javascript:"+this.objName+".PreviousPage("+intPage+")";
				this._xsl.selectNodes("//@HREF")[2].value = "javascript:"+this.objName+".NextPage("+intPage+")";
				this._xsl.selectNodes("//@HREF")[3].value = "javascript:"+this.objName+".LastPage()";
			}
			else
			{
				if(this.IsSetFirst) this._xsl.selectNodes("//@HREF")[0].value = "javascript:"+this.objName+".FirstPage()";
				if(this.IsSetPrev) this._xsl.selectNodes("//@HREF")[1].value = "javascript:"+this.objName+".PreviousPage("+intPage+")";
				if(this.IsSetNext) this._xsl.selectNodes("//@HREF")[2].value = "javascript:"+this.objName+".NextPage("+intPage+")";
				if(this.IsSetLast) this._xsl.selectNodes("//@HREF")[3].value = "javascript:"+this.objName+".LastPage()";
			}
			this._xsl.selectNodes("//xsl:for-each/@select")[this.FE_Index].value = "./*[position() <= "+(Number(intPage)*this._intR)+" and position() > " +((Number(intPage)-1)*this._intR)+"]";
			this.Redisplay(intPage);
		}
	}
	
	//处理“上一页”
	this.PreviousPage = function(intPage){
		var strDisplay;
		var strDateRange;
		if (intPage>1) {
			intPage = Number(intPage) - 1;
			this._intC = intPage;
			if (this.IsSetPage){
				this._xsl.selectNodes("//@HREF")[0].value = "javascript:"+this.objName+".FirstPage()";
				this._xsl.selectNodes("//@HREF")[1].value = "javascript:"+this.objName+".PreviousPage("+intPage+")";
				this._xsl.selectNodes("//@HREF")[2].value = "javascript:"+this.objName+".NextPage("+intPage+")";
				this._xsl.selectNodes("//@HREF")[3].value = "javascript:"+this.objName+".LastPage()";
			}
			else
			{
				if(this.IsSetFirst) this._xsl.selectNodes("//@HREF")[0].value = "javascript:"+this.objName+".FirstPage()";
				if(this.IsSetPrev) this._xsl.selectNodes("//@HREF")[1].value = "javascript:"+this.objName+".PreviousPage("+intPage+")";
				if(this.IsSetNext) this._xsl.selectNodes("//@HREF")[2].value = "javascript:"+this.objName+".NextPage("+intPage+")";
				if(this.IsSetLast) this._xsl.selectNodes("//@HREF")[3].value = "javascript:"+this.objName+".LastPage()";
			}
			this._xsl.selectNodes("//xsl:for-each/@select")[this.FE_Index].value = "./*[position() <= "+(Number(intPage)*this._intR)+" and position() > "+((Number(intPage)-1)*this._intR)+"]";
			this.Redisplay(intPage);
		}
	}
	
	//“第一页”的处理
	this.FirstPage = function(){
		if (this.IsSetPage){
			this._xsl.selectNodes("//@HREF")[0].value = "javascript:"+this.objName+".FirstPage()";
			this._xsl.selectNodes("//@HREF")[1].value = "javascript:"+this.objName+".PreviousPage(1)";
			this._xsl.selectNodes("//@HREF")[2].value = "javascript:"+this.objName+".NextPage(1)";
			this._xsl.selectNodes("//@HREF")[3].value = "javascript:"+this.objName+".LastPage()";
		}
		else
		{
			if(this.IsSetFirst) this._xsl.selectNodes("//@HREF")[0].value = "javascript:"+this.objName+".FirstPage()";
			if(this.IsSetPrev) this._xsl.selectNodes("//@HREF")[1].value = "javascript:"+this.objName+".PreviousPage(1)";
			if(this.IsSetNext) this._xsl.selectNodes("//@HREF")[2].value = "javascript:"+this.objName+".NextPage(1)";
			if(this.IsSetLast) this._xsl.selectNodes("//@HREF")[3].value = "javascript:"+this.objName+".LastPage()";
		}
		this._xsl.selectNodes("//xsl:for-each/@select")[this.FE_Index].value = "./*[position() < "+(this._intR+1)+" and position() > 0]";
		this._intC = 1;
		this.Transform();
		this.setPageCount();
	}

	//“最末页”的处理
	this.LastPage = function(){
		var intTotalPages;
		var intTotalRecords;

		intTotalPages = this.getNumberOfPages(intTotalRecords);
		this.NextPage(intTotalPages - 1);
	}
	
	this.PageChange = function(intPage){
		this._intC = intPage;
		if (this.IsSetPage){
			this._xsl.selectNodes("//@HREF")[0].value = "javascript:"+this.objName+".FirstPage()";
			this._xsl.selectNodes("//@HREF")[1].value = "javascript:"+this.objName+".PreviousPage("+intPage+")";
			this._xsl.selectNodes("//@HREF")[2].value = "javascript:"+this.objName+".NextPage("+intPage+")";
			this._xsl.selectNodes("//@HREF")[3].value = "javascript:"+this.objName+".LastPage()";
		}
		else
		{
			if(this.IsSetFirst) this._xsl.selectNodes("//@HREF")[0].value = "javascript:"+this.objName+".FirstPage()";
			if(this.IsSetPrev) this._xsl.selectNodes("//@HREF")[1].value = "javascript:"+this.objName+".PreviousPage("+intPage+")";
			if(this.IsSetNext) this._xsl.selectNodes("//@HREF")[2].value = "javascript:"+this.objName+".NextPage("+intPage+")";
			if(this.IsSetLast) this._xsl.selectNodes("//@HREF")[3].value = "javascript:"+this.objName+".LastPage()";
		}
		this._xsl.selectNodes("//xsl:for-each/@select")[this.FE_Index].value = "./*[position() <= "+(Number(intPage)*this._intR)+" and position() > "+((Number(intPage)-1)*this._intR)+"]";
		this.Redisplay(intPage);
	}
	
}
