/*
 * 版权所有 ( c ) 联想集团有限公司 2004。保留所有权利。
 * 项目：  NISMS 2.0
 * 文件名：page.js
 * 描述：表格的翻页和排序
 * 作者：笋大伟
 * 日期：2005-4-19
 * 修改历史：
 * 【时间】		【修改者】	【修改内容】
 *
 * $Id: page.js 45 2005-08-03 01:46:02Z fengbo $
 */

//翻页和排序
//用法：
//<head>中：
//tableHeaders[0] = new TableHeader('title-Sn','措施编号');
//tableHeaders[1] = new TableHeader('title-Name','措施名称');
//sortUrl = '<html:rewrite page="/securityindex/basiclibmgmt/BasicLibrary.do?method=viewall"/>';
//initPages('<bean:write name="orderby"/>','<bean:write name="dir"/>');
//cPage = <bean:write name="cPage"/>;
//pageSize = <bean:write name="pageSize"/>;
//tRecords = <bean:write name="tRecords"/>;
//
//<body onload="sortedPages(window);">
//footerCtrl();


//翻页按钮显示的文字
var pageFirst_Name = '第一页';
var pagePrevious_Name = '上一页';
var pageNext_Name = '下一页';
var pageLast_Name = '最后页';

var tableHeaders = new Array(); //表头列表，需在jsp的<head>中，对其加入一个或多个TableHeader()
var sortUrl = '';//该页的URL，需在jsp的<head>中为其赋值
var footerUrl = '';//翻页使用的url，暂时与sortUrl相同
var pageSize = 10; //每页显示的记录数
var cPage = 1; //当前的页数
var tRecords = 0;//总记录数

//需要排序的表头的类
function TableHeader(id,name)
{
	this.id = id; //表头<td>的id,名称必须为"title-"+数据库中相应列的名称，如果多个元素公用一个id排序，则TableHeader中写"title-"+数据库中相应列的名称，元素id写"XX"+"title-"+数据库中相应列的名称，以示区别
	this.name = name; //表头显示的名称
	var order = ''; //升序为"asc"，降序为"desc",不排序为""
}

//生成排序的表头和翻页的按钮链结，需在jsp中添加<body onload="sortedPages(window);">
function sortedPages(win)
{
	//生成翻页的链接，具体是否disable，在下面判断
	win.page_first.innerHTML = '<a href="'+sortUrl+'&cPage=1'+'&pageSize='+pageSize+'">'+pageFirst_Name+'</a>';
	win.page_previous.innerHTML = '<a href="'+sortUrl+'&cPage='+(cPage-1)+'&pageSize='+pageSize+'">'+pagePrevious_Name+'</a>';
	win.page_next.innerHTML = '<a href="'+sortUrl+'&cPage='+(cPage+1)+'&pageSize='+pageSize+'">'+pageNext_Name+'</a>';
	win.page_last.innerHTML = '<a href="'+sortUrl+'&cPage='+(Math.floor((tRecords-1)/pageSize)+1)+'&pageSize='+pageSize+'">'+pageLast_Name+'</a>';

	for(var i=0;i<tableHeaders.length;i++)
	{
		var tableHeaderId = tableHeaders[i].id;
		tableHeaderId = tableHeaderId.substring(tableHeaderId.indexOf('title-'));
		var tds = document.getElementsByTagName("td");
		for(var j=0;j<tds.length;j++)
		{
			var tdId = tds[j].id;
			if(tdId!=''&&tdId.indexOf(tableHeaderId)!=-1) //找出以title-columnName结尾的td，在td的元素中加入链接
			{
				if (tableHeaders[i].order == 'asc')
				{
					win[tdId].innerHTML = '<a href="'+sortUrl+'&orderby='+tableHeaders[i].id+'&dir=desc'+'&cPage='+cPage+'&pageSize='+pageSize+'">'+'^ '+tableHeaders[i].name+'</a>';
					win.page_first.innerHTML = '<a href="'+sortUrl+'&orderby='+tableHeaders[i].id+'&dir=asc'+'&cPage=1'+'&pageSize='+pageSize+'">'+pageFirst_Name+'</a>';
					win.page_previous.innerHTML = '<a href="'+sortUrl+'&orderby='+tableHeaders[i].id+'&dir=asc'+'&cPage='+(cPage-1)+'&pageSize='+pageSize+'">'+pagePrevious_Name+'</a>';
					win.page_next.innerHTML = '<a href="'+sortUrl+'&orderby='+tableHeaders[i].id+'&dir=asc'+'&cPage='+(cPage+1)+'&pageSize='+pageSize+'">'+pageNext_Name+'</a>';
					win.page_last.innerHTML = '<a href="'+sortUrl+'&orderby='+tableHeaders[i].id+'&dir=asc'+'&cPage='+(Math.floor((tRecords-1)/pageSize)+1)+'&pageSize='+pageSize+'">'+pageLast_Name+'</a>';
				}
				else if (tableHeaders[i].order == 'desc')
				{
					win[tdId].innerHTML = '<a href="'+sortUrl+'&orderby='+tableHeaders[i].id+'&dir=asc'+'&cPage='+cPage+'&pageSize='+pageSize+'">'+'v '+tableHeaders[i].name+'</a>';
					win.page_first.innerHTML = '<a href="'+sortUrl+'&orderby='+tableHeaders[i].id+'&dir=desc'+'&cPage=1'+'&pageSize='+pageSize+'">'+pageFirst_Name+'</a>';
					win.page_previous.innerHTML = '<a href="'+sortUrl+'&orderby='+tableHeaders[i].id+'&dir=desc'+'&cPage='+(cPage-1)+'&pageSize='+pageSize+'">'+pagePrevious_Name+'</a>';
					win.page_next.innerHTML = '<a href="'+sortUrl+'&orderby='+tableHeaders[i].id+'&dir=desc'+'&cPage='+(cPage+1)+'&pageSize='+pageSize+'">'+pageNext_Name+'</a>';
					win.page_last.innerHTML = '<a href="'+sortUrl+'&orderby='+tableHeaders[i].id+'&dir=desc'+'&cPage='+(Math.floor((tRecords-1)/pageSize)+1)+'&pageSize='+pageSize+'">'+pageLast_Name+'</a>';
				}
				else
				{
					win[tdId].innerHTML = '<a href="'+sortUrl+'&orderby='+tableHeaders[i].id+'&dir=asc'+'&cPage='+cPage+'&pageSize='+pageSize+'">'+tableHeaders[i].name+'</a>';
				}
			}
		}
	}
	//根据当前页数，判断翻页按钮是否disable
	if(cPage==1)
	{
		win.page_first.disabled=true;
		win.page_first.innerHTML = pageFirst_Name;
		win.page_previous.disabled=true;
		win.page_previous.innerHTML = pagePrevious_Name;
	}
	if(cPage*pageSize>=tRecords)
	{
		win.page_next.disabled=true;
		win.page_next.innerHTML = pageNext_Name;
		win.page_last.disabled=true;
		win.page_last.innerHTML = pageLast_Name;
	}
}

//初始化表的排序和翻页状态，需在jsp的<head>中调用
function initPages(orderby,dir)
{
	for(var i=0;i<tableHeaders.length;i++)
	{
		if(tableHeaders[i].id==orderby)
		{
			tableHeaders[i].order = dir;
		}
	}
	footerUrl = sortUrl;
}

//生成翻页控制的HTML，在jsp中需要的地方加入
function footerCtrl(disable)
{
	var str = '';
	if(typeof disable != "undefined")
	{
		str += '<div style="display:none;">';
	}
	str += '<table width=100%>';
	str += '<tr class="normal">';
	str += '<td>';
	str += '总记录数：'+tRecords;
	str += '</td>';
	str += '<td>';
	str += '每页显示：'+pageSize;
	str += '</td>';
	str += '<td>';
	str += '第'+ cPage +'页/共' + (Math.floor((tRecords-1)/pageSize)+1) +'页';
	str += '</td>';
	str += '<td id="page_first">';
	str += pageFirst_Name;
	str += '</td>';
	str += '<td id="page_previous">';
	str += pagePrevious_Name;
	str += '</td>';
	str += '<td id="page_next">';
	str += pageNext_Name;
	str += '</td>';
	str += '<td id="page_last">';
	str += pageLast_Name;
	str += '</td>';
	str += '</tr>';
	str += '</table>';
	if(typeof disable != "undefined")
	{
		str += '</div>';
	}
	document.write(str);
}
