var tables,trs,tds头,tds奇,tds偶;
tables="<table id='QueryTable' border='1' width='99%' bordercolorlight='#000000' cellspacing='0' cellpadding='0' bordercolordark='#FFFFFF'>";
trs="<tr height=25>";
tds头="<td bgcolor='#E0E0E0' align='center'>";
tds奇="<td bgcolor='#FFFFCC' align='center'>";
tds偶="<td bgcolor='#CCFFFF' align='center'>";
//function document.oncontextmenu() { return false; } 
//███████████████████████████████████████████████████████████████████████
var _st = window.setTimeout;
window.setTimeout = function(fRef, mDelay) 
{
	 if(typeof fRef == 'function')
	 {
		  var argu = Array.prototype.slice.call(arguments,2);
		  var f = (function(){ fRef.apply(null, argu); });
		  return _st(f, mDelay);
	 }
	 return _st(fRef,mDelay);
}
//███████████████████████████████████████████████████████████████████████
//GetQueryValue(document.location.search,'xzy')
function GetQueryValue(sorStr,panStrs)
{
	
	var vStr="";
	var panStr="";
	
	if (sorStr==null || sorStr=="" || panStrs==null || panStrs=="") return vStr;

	sorStr = sorStr.toLowerCase();
	panStrs=panStrs.toLowerCase();
	
	panStr=panStrs;
	panStr += "=";
	panStr="?"+panStr;
	var itmp;
	itmp=sorStr.indexOf(panStr);//&id=10

	if(itmp<0)
	{
		panStr=panStrs;
		panStr += "=";
		panStr="&"+panStr;
		itmp=sorStr.indexOf(panStr);
				
	}
	if (itmp<0){return vStr;}
	

	sorStr = sorStr.substr(itmp + panStr.length);
	itmp=sorStr.indexOf("&");
	if (itmp<0)
	{
		return sorStr;
	}
	else
    {
		sorStr=sorStr.substr(0,itmp);
		return sorStr;
	}
}
//███████████████████████████████████████████████████████████████████████
//根据编辑页面上的查询设置,生成向服务器提交的xml串
//这个查询比较简单,只能实现条件与的查询

function GetEditXMLQuery(容器,查询表名)
{
	var objDom
	var objRoot
	var objNode
	var objNodeValue
	var objattID
	var objattTabOrder
	var objPI
	var x
    var Rval;
    var oChild
    var 字段名
    var 条件
    var 值;
	var i;

	objDom = new ActiveXObject("Microsoft.XMLDOM");
	objDom.async=false;
	objDom.preserveWhiteSpace = true;
	objRoot = objDom.createElement("条件");
	objDom.appendChild(objRoot); //添加根节点
	
	objNode = objDom.createElement("查询表");
	objNodeValue = objDom.createElement("表名");
	objNodeValue.text =查询表名;
	objNode.appendChild(objNodeValue);
	objRoot.appendChild(objNode);


	objNode = objDom.createElement("排序设定");
	objNodeValue = objDom.createElement("排序列");
	objNodeValue.text =容器.order;
	objNode.appendChild(objNodeValue);
	objRoot.appendChild(objNode);

	objNode = objDom.createElement("附加条件");
	objNodeValue = objDom.createElement("addwhere");
	objNodeValue.text =容器.addwhere;
	objNode.appendChild(objNodeValue);
	objRoot.appendChild(objNode);

	var obj =容器.all;
    for(i=0 ;i<obj.length; i++)
    {
        if(obj[i].tagName=="INPUT")
		{
			if(obj[i].type.toUpperCase()=="TEXT")
			{
				字段名=obj[i].fieldname;
				if(字段名!=null)
				{
					值=obj[i].value;

					objNode = objDom.createElement("条件设定");

					objNodeValue = objDom.createElement("fieldname");
					objNodeValue.text =字段名;
					objNode.appendChild(objNodeValue);

					objNodeValue = objDom.createElement("setvalue");
					objNodeValue.text =值;
					objNode.appendChild(objNodeValue);

					objRoot.appendChild(objNode);				
				}
			}
		}
    }

	
 
	//objPI = objDom.createProcessingInstruction("xml", "version='1.0' encoding='GBK'");
	//objDom.insertBefore(objPI, objDom.childNodes(0));

    Rval=objDom.xml;
    //Rval=Rval.replace('<?xml version="1.0"?>','<?xml version="1.0" encoding="GBK"?>');

	objDom = null;
	objRoot = null;
	objNode = null;
	objNodeValue = null;
	objattID = null;
	objattTabOrder = null;
	objPI = null;
	delete objDom;
	CollectGarbage();
	
	return Rval;

}
//███████████████████████████████████████████████████████████████████████
//把 GetEditXMLQuery 产生的查询xml串,提交到服务器上,得到可以识别的sql语句
function GetEditSqls(XMLQuery)
{	//ControlTestTo();
  	var oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	var rval;
	oXmlHttp.Open("POST", "zbgg/XML.jsp?pipe=editsqls", false);
	oXmlHttp.setRequestHeader("Content-Type","text/xml");
	oXmlHttp.Send(XMLQuery);
	//alert(oXmlHttp.responseText);
	var Xsldom=new ActiveXObject("Microsoft.XMLDOM");
	Xsldom.async=false;
	
	//alert(oXmlHttp.responseText);

	//Xsldom.loadXML("<?xml version='1.0' encoding='GBK' ?><root><sqls>select id,设备名称,设备型号,生产厂家,供货厂家,购买日期,维修厂家,保修期限_年,设备状态,主机序列号,显示器,显示器序列号,CPU,内存,硬盘,网卡,声卡,扩展槽,电源,光驱,其它配件,来源,使用部门,使用人,原值,投运日期,使用年限,净残值率,删除标志,操作帐号,暂不生成固定资产卡片,记帐日期,记帐凭证号 from JSJ_计算机管理  where   id&gt;0 order by ID</sqls></root>");
	Xsldom.loadXML(oXmlHttp.responseText);
	
	//alert(Xsldom.childNodes.length);

	rval=Xsldom.documentElement.childNodes[0].childNodes[0].text;
	
	if(rval.substring(0,4)=="错误描述")
	{
		alert(rval);
	}
	return (rval);
}
//███████████████████████████████████████████████████████████████████████
//编辑页面上点击查询的时候调用此过程,真正执行的是Edit查询函数
//本函数的目的是在查询执行之前先雏出个等待文字
//因为没有doevents,所以这么做
function Start查询(Sqls,结果容器,每页记录数,表格宽度,specialtype,每行文字数,表格名称,显示表头,tdjs行,显示翻页)
{
	结果容器.innerHTML="<table border='0' width='100%'><tr><td width='50'><img border='0' src='zbgg/images/wait2.gif' width='40' height='40'></td><td>查询进行中,请稍后......</td></tr></table>";
	setTimeout(Edit查询,1,Sqls,结果容器,每页记录数,表格宽度,specialtype,每行文字数,表格名称,显示表头,tdjs行,显示翻页)  ;
	//Edit查询(Sqls,结果容器,每页记录数,表格宽度,specialtype,每行文字数,表格名称,显示表头);
}
//███████████████████████████████████████████████████████████████████████
//编辑页面上点击查询的时候调用此过程,根据查询语句Sqls生成表格显示在容器上	   pageshow
function Edit查询(Sqls,结果容器,每页记录数,表格宽度,specialtype,每行文字数,表格名称,显示表头,tdjs行,显示翻页) 
{
	var table1;
	table1=new DBGrid();
	table1.specialtype=specialtype;//"editquery";
	table1.startcoln=1;
	table1.width=表格宽度;
	if(tdjs行!=null)this.tds奇=tdjs行;
	if(表格名称==null)
		table1.gridname="QueryTable";
	else
		table1.gridname=表格名称;
	if(显示翻页!=null)table1.showpagedetail=显示翻页;
	if(显示表头!=null)table1.showcolumn=显示表头;
	table1.posttype="sql";
	table1.maxwordlen=每行文字数;
	table1.sqls=Sqls;
	table1.recordperpage=每页记录数;//每页显示的数据量
	table1.pageno=1;//显示第几页
	
	结果容器.innerHTML="";		
	table1.createtable(结果容器);

	return;
}

//███████████████████████████████████████████████████████████████████████
//新增/修改数据后要把表格中对应的数据也要进行更新
//PageDoc:是表格所在页面的document
//TableName:从哪个表中读取数据
//insert:true表示新增,false表示修改
//ID:要更新的数据的id号
//多行刷新:刷新表格以ID作为关键字检索数据,如果检索到多行数据,修改时会依次到表格内查找,找到后便依次修改,对于指定排序的数据,可能会发生顺序的改变
//新增时会增加多行.
function 刷新表格(PageDoc,TableName,Insert,ID)
{
	var Col;
	var rs=new RecordSet();
	if(ID.indexOf(",")>-1)//有时ID返回的可能是带逗号的ID串
		rs.open("select "+GetVisibleCols(TableName)+" from "+TableName+" where id in ("+ID+")");//第一列中是ID,其他的为数据
	else
		rs.open("select "+GetVisibleCols(TableName)+" from "+TableName+" where id="+ID);//第一列中是ID,其他的为数据
	
	if(rs.errors.length>0)
	{
		alert("意外错误\n"+rs.errors);
		rs.close();
		return;
	}	
	if(rs.recordcount<1)
	{
		alert("根据给定的ID["+ID+"]没有从数据库中找到数据,操作的数据可能被其他用户删除了");
		return;
	}

	var tableobj,tbodyobj,trobj,tdobj;
	var tds;
	tableobj=PageDoc.all.QueryTable;
	tbodyobj=tableobj.childNodes[0];
	
	var rowstart=0;
	for(var rown=0;rown<rs.recordcount;rown++)
	{
		if(Insert)//新增时要创建新的行
		{
			trobj=PageDoc.createElement(trs);
			trobj.dataid=ID;
			tbodyobj.appendChild(trobj);
			tableobj.DBGrid.currentrowcount++;
			//tableobj.RowsNum++;
			//PageDoc.all.NumShow.innerHTML="当前数据量"+tableobj.RowsNum;
		}
		else//修改时要找到修改数据对应的行
		{
			for(var i=rowstart;i<tbodyobj.childNodes.length;i++)
			{
				if(tbodyobj.childNodes[i].dataid==ID)
				{
					trobj=tbodyobj.childNodes[i];
					rowstart=i+1;
					break;
				}
			}
			if(i==tbodyobj.childNodes.length)
			{
				if(rowstart==0)alert("十分意外的事件发生了,在修改后刷新表格时找不到原始数据行.");
				return;
			}
		}

		if(Insert)//
		{
			if(tableobj.DBGrid.currentrowcount % 2==0)
			{
				tds=tds奇;
			}
			else
			{
				tds=tds偶;
			}
			//供删除用的选择框
			tdobj=PageDoc.createElement(tds);
			tdobj.width="15";
			trobj.appendChild(tdobj);
			tdobj.innerHTML="<input type='checkbox' name='ItemSelect'>";
			//alert(tdobj.innerHTML);
		}
		var n;
		for(n=0;n<rs.columncount;n++)//表的列循环,里面都是需要显示的数据
		{
			if(Insert)//新增数据的时候,需要增加每个数据对应的单元格
			{
				tdobj=PageDoc.createElement(tds);
				trobj.appendChild(tdobj);
			}
			else//修改的时候,依次改原始表格的单元格即可
			{
				tdobj=trobj.childNodes[n+1];//因为第一个是删除复选框,所以要+1
			}
			s=rs.rows(rown,n);
			if(s.length==0)s="&nbsp;&nbsp;&nbsp;";
			tdobj.innerHTML="<a style='cursor:hand' onmouseover=\"this.style.color='blue'\" onmouseout=\"this.style.color='black'\" onclick=\"Edit("+ID+")\">"+s+"</a>";
		}
	}
}
//███████████████████████████████████████████████████████████████████████
//查询结果集,一般用于不是很多的数据量,否则会变慢.
//从服务器端返回结果集,和vb中的Adodb.recordset类似
//作者:山西太原的邢志云
function RecordSet()
{
	
	this.columncount=0;
	this.recordcount=0;
	this.errors="";
	var colarr=new Array();//存储列的名称,都是大写的,colarr[0]="姓名NAME",colarr[1]="性别GENTAL"......
	var rowarr=new Array();//存储结果集的二维数组
	this.close=function()//关闭
	{
		delete colarr;
		delete rowarr;
		CollectGarbage();
	}
	//读取结果并设置各种值
	this.open=function(sqls)
	{
		//alert(sqls);
		//rowarr[0]=new Array(5);
		//rowarr[1]=new Array(5);
		//1.生成sqls的xml传输体
		var objDom;
		var objRoot;
		var objNode;
		var objNodeValue;
		var xmlsql;
		var i,n;
		this.errors="";
		this.columncount=0;
		this.recordcount=0;
		objDom = new ActiveXObject("Microsoft.XMLDOM");
		objDom.async=false;
		objDom.preserveWhiteSpace = true;
		objRoot = objDom.createElement("root");
		objDom.appendChild(objRoot); //添加根节点
		
		objNode = objDom.createElement("set");
		objNodeValue = objDom.createElement("sql");
		objNodeValue.text =sqls;
		objNode.appendChild(objNodeValue);
		objRoot.appendChild(objNode);


		xmlsql=objDom.xml;
		//alert(xmlsql);
		//2.向页面提交,返回xml结果集
		
		var XML跳出Flag;
		var oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		//alert(sqls);
		oXmlHttp.Open("POST", "zbgg/XML.jsp?pipe=recordset", false);
		oXmlHttp.setRequestHeader("Content-Type","text/xml")
		oXmlHttp.Send(xmlsql);
		
		//alert(oXmlHttp.responseText);
		
		var Xsldom=new ActiveXObject("Microsoft.XMLDOM");
		Xsldom.async=false;
		Xsldom.loadXML(oXmlHttp.responseText);//得到返回的xml结果
		//alert(Xsldom.xml);
		//3.解析xml并存储到数组中
		var Table,row,col,n;
		Table=Xsldom.documentElement.childNodes;
		if(Xsldom.documentElement.tagName=="NewDataSet")//是正常返回的数据
		{		
			XML跳出Flag=0
			for(i=0;i<Table.length;i++)//表的行循环
			{

				Row=Table.item(i);
				if(Row.tagName=="cols")//是列说明
				{
					XML跳出Flag=1;
					Col=Row.childNodes;
					this.columncount=Col.length;
					for(n=0;n<this.columncount;n++)//表的列循环
					{
						colarr[n]=Col.item(n).text.toUpperCase();
					}
				}
				else
				{
					if(XML跳出Flag==1)
					{
						break;
					}
				}
			}
			//alert(this.columncount);
			XML跳出Flag=0
			for(i=0;i<Table.length;i++)
			{
				Row=Table.item(i);
				if(Row.tagName=="r")//是数据行
				{
					XML跳出Flag=1;
					Col=Row.childNodes;
					rowarr[this.recordcount]=new Array(Col.length);
					for(n=0;n<Col.length;n++)
					{
						rowarr[this.recordcount][n]=Col.item(n).text;
					}
					this.recordcount++;
				}
				else
				{
					if(XML跳出Flag==1)
					{break;}
				}
			}
			//alert(this.recordcount);
			//alert(rowarr[3][1]);
		}
		else if(Xsldom.documentElement.tagName=="error")//返回了错误
		{
			s="发生了意外错误:\n"+Xsldom.documentElement.childNodes(0).text;
			this.errors=s;
			//alert(s);
		}

		delete oXmlHttp;
		delete Xsldom
		CollectGarbage();
	}
	//根据列的编号,返回列的名称
	this.getcolnamebyno=function(col)
	{
		if(this.columncount>0 && col<this.columncount)
		{
			return colarr[col];
		}
		else
		{
			alert ("列编号["+col+"]不在有效范围内");
			throw ("列编号["+col+"]不在有效范围内");
			//return "";
		}
	}
	//根据列的名称,返回列的编号
	this.getcolnobyname=function(cname)
	{
		var i;
		for(i=0;i<this.columncount;i++)
		{
			if(cname.toUpperCase()==colarr[i])
			{
				return i;
				break;
			}
		}
		if(i==this.columncount)
		{
			alert("列名["+cname+"]不存在");
			throw "列名["+cname+"]不存在";
			//return -1;//没有找到这个列名
		}
	}
	//返回结果集中的值,rows[0][1],
	this.rows=function(row,col)
	{
		if(IsNumber(col))//是数字
		{
			return rowarr[row][col];
		}
		else
		{
			return rowarr[row][this.getcolnobyname(col)];
		}
	}
}
//███████████████████████████████████████████████████████████████████████
function getrsval(sqls)
{
	var rs=new RecordSet();
	var s;
	rs.open(sqls);
	if(rs.errors.length>0)
	{
		alert("getrsval"+rs.errors);
		rs.close();
		return;
	}
	if(rs.recordcount>0)
		s=(rs.rows(0,0));
	else
		s="";
	rs.close();
	return s;
}
//███████████████████████████████████████████████████████████████████████
//获取指定表的可见列,哪些列可见由服务器的xzy表决定
//返回这些列构成的串 col1,col2,col3
function GetVisibleCols(TableName)
{
	var rs=new RecordSet();
	var s;
	rs.open("可见列."+TableName);
	if(rs.errors.length>0)
	{
		alert("GetVisibleCols"+rs.errors);
		rs.close();
		return;
	}
	//alert(rs.rows(0,0));
	s=rs.rows(0,0);
	rs.close();
	return s;
}
//███████████████████████████████████████████████████████████████████████
//在指定的容器上创建一个表格,主要特点是带分页的
//创建的表格中会附加一些属性
//  tableobj.id=this.gridname;//设置创建出来的表格的名字
//  tableobj.DBGrid=this;//本DBGrid对象会附着在创建的表格上
//作者:山西太原的邢志云

function DBGrid()
{
	this.gridname="";
	this.container;//加载表格对象的容器对象的名称
	this.width;//加载表格的宽度,一般是100%
	this.errors="";

	this.specialtype="";//特殊操作,表格内部的链接可能各种各样,所以要根据这个设置,在代码中编写不同的功能
						//="":显示普通的表格
						//="editquery":编辑页面的查询,要加删除复选框,要求返回的结果集第一列必须是ID
	this.startcoln=0;//对于特殊的 specialtype 有些不是从第0列开始显示表头,而是从指定的列开始的,如第一列是删除框

	this.posttype="";//sql,xml
	this.sql="";//如果posttype为sql,则这里写查询语句

	this.xml="";//如果posttype为xml,则这里是向url提交的xml串
	this.url="";//
	
	this.xmldom;//承载数据的XMLDOM对象

	this.showcolumn=true;//是否显示表头
	this.showpagedetail=true;//是否显示底部翻页链接

	this.recordperpage=15;//每页显示的数据量
	this.pageno=1;//显示第几页

	this.maxwordlen;//每个行列中最多能够容纳的文字
	this.columncount=0;//表格的数据列的数量(不包含复选框列)
	this.currentrowcount=0;//表格的当前页数据行的数量(不包含表头行),一般来说这个值和recordperpage是相同的,但到了最后一页的时候,由于行不够便会不一样
	this.allrecordcount=0;//返回所有结果集的记录数量
	this.allpagecount=0;//总页数


	this.tables=tables;//"<table border='1' width='99%' bordercolorlight='#000000' cellspacing='0' cellpadding='0' bordercolordark='#FFFFFF'>";
	this.trs=trs;//"<tr height=25>";
	this.tds头=tds头;//"<td bgcolor='#E0E0E0' align='center'>";
	this.tds奇=tds奇;//"<td bgcolor='#FFFFCC' align='center'>";
	this.tds偶=tds偶;//"<td bgcolor='#CCFFFF' align='center'>";	
	
	//把创建的表格加载到 container 中
	this.createtable=function(container)
	{
		this.errors="";
		this.container=container;
		var xmls;
		
		if(this.posttype=="sql")
		{
			//1.生成查询xml,提交到页面

			var obj;
			var objDom
			var objRoot
			var objNode
			var objNodeValue
			
			
			objDom = new ActiveXObject("Microsoft.XMLDOM");
			objDom.async=false;
			objDom.preserveWhiteSpace = true;
			//-----------------------------------------------------------------------------------
			objRoot = objDom.createElement("root");
			objDom.appendChild(objRoot); //添加根节点
			//-----------------------------------------------------------------------------------
			objNode = objDom.createElement("set");

			objNodeValue = objDom.createElement("页码");
			objNodeValue.text =this.pageno;
			objNode.appendChild(objNodeValue);

			objNodeValue = objDom.createElement("每页记录数");
			objNodeValue.text =this.recordperpage;
			objNode.appendChild(objNodeValue);

			objNodeValue = objDom.createElement("sql");
			objNodeValue.text =this.sqls;
			objNode.appendChild(objNodeValue);

			objRoot.appendChild(objNode);
			//-----------------------------------------------------------------------------------
			xmls=objDom.xml

			objDom = null;
			objRoot = null;
			objNode = null;
			objNodeValue = null;
			delete objDom;
			CollectGarbage();			

			var oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			oXmlHttp.Open("POST", "zbgg/XML.jsp?pipe=dbgrid", false);
			oXmlHttp.setRequestHeader("Content-Type","text/xml");
			oXmlHttp.Send(xmls);

			//alert(oXmlHttp.responseText);
			//return;
		}
		else if(this.posttype=="xml")
		{
			
		}
		

		//document.write(oXmlHttp.responseText);
		//return;

		var Xsldom=new ActiveXObject("Microsoft.XMLDOM");
		Xsldom.async=false;
		Xsldom.loadXML(oXmlHttp.responseText);//得到返回的xml结果
		//alert(Xsldom.xml);
		var XML跳出Flag;

		var 行数量=0,列数量=0;
		var Table,Row,Col,n;
		var tableobj,tbodyobj,trobj,tdobj;
		var tds;
		var s,st;
		var ID;
		var overmaxlen=false;
		this.xmldom=Xsldom;

		tableobj=document.createElement(this.tables);//创建表格
		tableobj.id=this.gridname;//设置表格的名字
		tableobj.DBGrid=this;
		container.appendChild(tableobj);
		
		tbodyobj=document.createElement("<tbody>");
		
		tableobj.appendChild(tbodyobj);

		Table=Xsldom.documentElement.childNodes;

		if(Xsldom.documentElement.tagName=="NewDataSet")//是正常返回的数据
		{
	//↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*				
	//创建表格的表头
			XML跳出Flag=0;
			if(this.showcolumn)
			{
				for(i=0;i<Table.length;i++)//表的行循环
				{

					Row=Table.item(i);
					if(Row.tagName=="cols")//是列说明
					{
						XML跳出Flag=1;
						trobj=document.createElement(this.trs);
						tbodyobj.appendChild(trobj);
						Col=Row.childNodes;
						列数量=Col.length;
						this.columncount=列数量;

						if(this.specialtype=="editquery")
						{
							//供删除用的选择框
							tdobj=document.createElement(this.tds头);
							tdobj.width="15";
							trobj.appendChild(tdobj);
							tdobj.innerHTML="&nbsp;";
						}

						for(n=this.startcoln;n<列数量;n++)//表的列循环
						{
							tdobj=document.createElement(this.tds头);
							trobj.appendChild(tdobj);
							//特殊处理********************************
							if(Col.item(n).text=="大修占原值")Col.item(n).text="大修占原值%";
							//特殊处理********************************
							tdobj.innerHTML="<b>"+Col.item(n).text+"</b>";
						}
					}
					else
					{
						if(XML跳出Flag==1)
						{
							break;
						}
					}
				}
			}
			if(this.width==null)
			{
				/*
				if(列数量<=10)
				{
					tableobj.width="99%";
				}
				else
				{
					tableobj.width=(列数量*10-1)+"%";
				}
				*/
				tableobj.width="99%";
			}
			else
			{
				tableobj.width=this.width;
			}

	//↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*				


	//↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*				
	//创建表格的数据体
			XML跳出Flag=0;
			for(i=0;i<Table.length;i++)//表的行循环
			{
				Row=Table.item(i);
				if(Row.tagName=="r")//是数据行
				{
					XML跳出Flag=1;
					行数量++;
					
					trobj=document.createElement(this.trs);
					tbodyobj.appendChild(trobj);
					//alert(Row.attributes.length);
					Col=Row.childNodes;
					
					if(行数量 % 2==0)
					{
						tds=this.tds奇;
					}
					else
					{
						tds=this.tds偶;
					}
					ID=Col.item(0).text;//本行对应的Id号,在返回数据的第一列中
					if(this.specialtype=="editquery")
					{//供删除用的选择框
						trobj.dataid=ID;
						tdobj=document.createElement(tds);
						tdobj.width="15";
						trobj.appendChild(tdobj);
						tdobj.innerHTML="<input type='checkbox' name='ItemSelect'>";
					}
					if(this.specialtype=="从属设备显示")
					{
						ID=Col.item(0).text;//本行对应的Id号,在返回数据的第一列中
						trobj.dataid=ID;
						tdobj=document.createElement(tds);
						tdobj.width="15";
						trobj.appendChild(tdobj);
						tdobj.innerHTML="&nbsp;";
					}

					for(n=this.startcoln;n<Col.length;n++)//表的列循环
					{
						tdobj=document.createElement(tds);
						trobj.appendChild(tdobj);
						s=Col.item(n).text;
						st=s;
						if(s.length==0)s="&nbsp;&nbsp;&nbsp;";//设置每个列的内容
						overmaxlen=false;
						if(this.maxwordlen!=null)
						{
							if(s.length>this.maxwordlen)
							{
								overmaxlen=true;
								s=s.substring(0,this.maxwordlen)+"……";
							}
						}
						if(this.specialtype=="editquery" || this.specialtype=="pageshow")
						{
							tdobj.innerHTML="<a style='cursor:hand' onmouseover=\"this.style.color='blue'\" onmouseout=\"this.style.color='black'\" onclick=\"Edit("+ID+")\">"+s+"</a>";
						}
						else
						{
							tdobj.innerHTML=s;
						}
						if(overmaxlen)tdobj.title=st;
					}
					
				}
				else
				{
					if(XML跳出Flag==1)
					{
						break;
					}
				}
			}
			
			this.currentrowcount=行数量;
	//↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*				
	//↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*↓*				
	//获取分页信息,总行数/总页数/当前页等
			XML跳出Flag=0
			for(i=0;i<Table.length;i++)//表的行循环
			{

				Row=Table.item(i);
				if(Row.tagName=="结果")//是列说明
				{
					//alert(Row.childNodes[0].tagName);
					//alert(GetItemVal(Row,"总页数"));
					this.pageno=MyVal(GetItemVal(Row,"页码"));//显示第几页
					this.allrecordcount=MyVal(GetItemVal(Row,"总行数"));//
					this.allpagecount=MyVal(GetItemVal(Row,"总页数"));
				}
				else
				{
					if(XML跳出Flag==1)
					{
						break;
					}
				}
			}
			if(this.showpagedetail)
			{
				//alert(this.allrecordcount);
				//alert(this.pageno);
				var obj;

				//把页码跳转和表体隔开一定的距离
				//obj=document.createElement("<a>");
				//obj.innerHTML="<table border='0' width='100%' id='table1' height='12' cellspacing='0' cellpadding='0'><tr><td></td></tr></table>";
				//container.appendChild(obj);

				if(true)//(this.allrecordcount>0)
				{
					if(this.specialtype=="editquery")
					{
						obj=document.createElement("<a id='choiceallarea' class='smallword'>");
						obj.innerHTML="<input type='checkbox' onclick='ChoiceAll(\"ItemSelect\",this.checked)' title='选中所有数据行'>";
						container.appendChild(obj);				 
					}

					if(this.allrecordcount>0 && this.pageno>1)
					{
						obj=document.createElement("<a id='firstpage' class='smallword' style='color=black;cursor:hand' onclick=\"DBGridGoToPage('"+this.gridname+"',1);\">");
						obj.innerHTML="首页 ";
						container.appendChild(obj);
					}
					else
					{
						obj=document.createElement("<a id='firstpage' class='smallword' style=\"color='#999999';\" >");
						obj.innerHTML="首页 ";
						container.appendChild(obj);
					}

					if(this.pageno>1)
					{
						obj=document.createElement("<a id='previouspage' class='smallword'  style='color=black;cursor:hand' onclick=\"DBGridGoToPage('"+this.gridname+"',"+(this.pageno-1)+");\">");
						obj.innerHTML="上一页 ";
						container.appendChild(obj);
					}
					else
					{
						obj=document.createElement("<a id='firstpage' class='smallword' style=\"color='#999999';\" >");
						obj.innerHTML="上一页 ";
						container.appendChild(obj);					
					}

					if(this.pageno<this.allpagecount)
					{
						obj=document.createElement("<a id='previouspage'  class='smallword'  style='color=black;cursor:hand' onclick=\"DBGridGoToPage('"+this.gridname+"',"+(this.pageno+1)+");\">");
						obj.innerHTML="下一页 ";
						container.appendChild(obj);
					}
					else
					{
						obj=document.createElement("<a id='firstpage' class='smallword' style=\"color='#999999';\" >");
						obj.innerHTML="下一页 ";
						container.appendChild(obj);					
					}

					if(this.allrecordcount>0 && this.pageno<this.allpagecount)
					{
						obj=document.createElement("<a id='firstpage' class='smallword' style='color=black;cursor:hand' onclick=\"DBGridGoToPage('"+this.gridname+"',"+this.allpagecount+");\">");
						obj.innerHTML="尾页 ";
						container.appendChild(obj);
					}
					else
					{
						obj=document.createElement("<a id='firstpage' class='smallword' style=\"color='#999999';\" >");
						obj.innerHTML="尾页 ";
						container.appendChild(obj);
					}

					obj=document.createElement("<a id='currentpageno' class='smallword'>");
					obj.innerHTML="页次： "+this.pageno+"/"+this.allpagecount+" 页&nbsp;&nbsp;";
					container.appendChild(obj);


					obj=document.createElement("<a id='allcount' class='smallword'>");
					obj.innerHTML="&nbsp;共 <b>"+this.allrecordcount+"</b> 篇文章&nbsp;&nbsp;";
					container.appendChild(obj);
					
					obj=document.createElement("<a id='allcount' class='smallword'>");
					obj.innerHTML="&nbsp;<b>"+this.recordperpage+"</b> 篇文章/页&nbsp;&nbsp;";
					container.appendChild(obj);
					
					

					obj=document.createElement("<a class='smallword'>");
					obj.innerHTML="&nbsp;转到 <input id='gotopageno' type='text' size='3' maxlength='4' value='"+this.pageno+"' style='text-align: center;border: 1px solid #000000; height:18px; font-size:12px'>&nbsp;<span style='cursor:hand' onclick=\"DBGridGoToPage('"+this.gridname+"',document.getElementById('gotopageno').value);\">跳转</span>";
					container.appendChild(obj);
					
					
					

					/*
					obj=document.createElement("<a id='NumShow'>");
					obj.innerHTML="当前数据量"+QueryTable.RowsNum;
					结果容器.appendChild(obj);
					*/
				}
			}
	//↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*↑*	

			delete oXmlHttp;
			delete Xsldom;
			CollectGarbage();
		}
		else if(Xsldom.documentElement.tagName=="error")//返回了错误
		{
			this.errors="发生了意外错误:\n"+Xsldom.documentElement.childNodes(0).text;;
			obj=document.createElement("<a id='errorshow'>");
			obj.innerHTML="<font color='red'>发生了意外错误:</font><br/><br/>"+Xsldom.documentElement.childNodes(0).text;;
			container.appendChild(obj);
			//alert(s);
		}

		delete oXmlHttp;
		delete Xsldom
		CollectGarbage();
				
	}
}
//将名字是 复选框名字s 的所有复选框根据corn进行复选,corn=true就选择,corn=false就清空
function ChoiceAll(复选框名字s,corn)
{
	var objs=document.getElementsByName(复选框名字s)
	if(objs.length==0)
	{
		alert("没有可共选择的数据行");
		return;
	}
	for(var i=0;i<objs.length;i++)
	{
		objs[i].checked=corn;
	}
}
function DBGridToExcel(gridnames)
{
	var dbgridobj=document.getElementById(gridnames).DBGrid;
	showModelessDialog('print_grid.htm?rnd='+Math.random(), dbgridobj, 'dialogWidth:900px; dialogHeight:700px; status:0;help: no;resizable:yes;');
	
}
//和DBGrid组件相关的翻页
//这里传来的是表格id的名字串,必须是由DBGrid组件创建表格才能这么调用
function DBGridGoToPage(gridnames,topage)
{
	var dbgridobj=document.getElementById(gridnames).DBGrid;//DBGrid对象
	//alert(dbgridobj.pageno);
	dbgridobj.pageno=topage;
	//alert(dbgridobj.pageno);
	dbgridobj.container.innerHTML="";
	dbgridobj.createtable(dbgridobj.container);
}
//███████████████████████████████████████████████████████████████████████
//创建简单的XML串,相当于是一行一列的,<roots><tname><colname>val</colname></tname></roots>
//调用方法:CreateSimpleXML("roots","tname","colname","邢志云")
function CreateSimpleXML(roots,tname,colname,val)
{
	var objDom
	var objRoot
	var objNode
	var objNodeValue
	var s
	
	objDom = new ActiveXObject("Microsoft.XMLDOM");
	objDom.async=false;
	objDom.preserveWhiteSpace = true;
	//-----------------------------------------------------------------------------------
	objRoot = objDom.createElement(roots);
	objDom.appendChild(objRoot); //添加根节点
	//-----------------------------------------------------------------------------------
	objNode = objDom.createElement(tname);
	
	objNodeValue = objDom.createElement(colname);
	objNodeValue.text =val;
	objNode.appendChild(objNodeValue);

	objRoot.appendChild(objNode);		
	//-----------------------------------------------------------------------------------
	s=objDom.xml

	objDom = null;
	objRoot = null;
	objNode = null;
	objNodeValue = null;
	delete objDom;
	CollectGarbage();
	return s;
}
//███████████████████████████████████████████████████████████████████████
//把一个xml串推回到服务器上,由服务器解析后,返回结果内容,一般是一个xml
//调用例子:XML推回("XML.aspx?pipe=editquery","<条件><查询表><表名>JC样品类别</表名></查询表><条件设定><fieldname>id</fieldname><setvalue>-1</setvalue></条件设定></条件>")
function XML推回(url,xmls)
{
	var s;
	var oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	oXmlHttp.Open("POST", url, false);
	oXmlHttp.setRequestHeader("Content-Type","text/xml")
    oXmlHttp.Send(xmls);
	s=oXmlHttp.responseText;
	delete oXmlHttp;
	CollectGarbage();
	return s;
}
//███████████████████████████████████████████████████████████████████████
//根据一个sql串,加载combobox
function AddChoice(OptionItem,SqlString)
{
	var r,c;
	var rs=new RecordSet();
	rs.open(SqlString);
	clearcombo(OptionItem);
	if(rs.errors.length>0)
	{
		alert(rs.errors);
		alert(rs.columncount);//0
		alert(rs.columncount);//0
		rs.close();
		OptionItem.options[1] = new Option(rs.errors);
		return;
	}
	
	for(r=0;r<rs.recordcount;r++)
	{
		OptionItem.options[r+1] = new Option(rs.rows(r,0),rs.rows(r,0));
	}

}
//███████████████████████████████████████████████████████████████████████
//清空一个Combobox,并加载一个空内容
function clearcombo(combo)
{
	combo.length=0;
	combo.options[0]=new Option("","");
}
//███████████████████████████████████████████████████████████████████████
function SetDefaultFocus()
{
	var obj=document.all;
    for(i=0 ;i<obj.length; i++)
    {
		if(obj[i].tagName=="INPUT")
		{
			if(obj[i].type.toUpperCase()=="TEXT")
			{
				if(obj[i].defaultfocus=="true")
				{
					if(!obj[i].disabled)
					{
						obj[i].focus();
						break;
					}
				}
			}
		}
	}
}
//███████████████████████████████████████████████████████████████████████
//可编辑的下拉框
//boxnames:下拉框对应的文本框名字,是字符串
//sqls:从数据库读取的查询语句,若返回的列>1列,则第一列的值为实际值,第二列的值为显示值
//forcerenew:数据被加载一次后,便被记录在box中的drophtml中,
//          当forcerenew为true的时候,会重新以sqls来读取下拉显示的数据,
//          当            false的时候,函数会自动判断box的drophtml如果为空则读取,如果不为空,则以这个来为popup的内容 
//inithtml:显示popup的innerHTML内容,当这个参数不为""的时候,sqls和forcerenew以及listclick全部失效,内容以此内容为准
//listclick:是一个函数的名称字符串,诱发click事件,如果这个参数不为null,在点击文字的时候会诱发这个函数,函数格式是 函数名(参数)
//          当inithtml<>""的时候,会失效
//
//作者:山西太原的邢志云
/*
调用举例:
DropDown('field类别','select 样品类别 from JC样品类别 order by 符号')//第一次下拉读取内容,以后便不再从服务器读取了
DropDown('field类别','select 样品类别 from JC样品类别 order by 符号',true)//每次下拉的时候,都强制读取内容
DropDown('field类别','',false,'html代码,要实现点击传值的功能')//popup中直接指定了字符串
一个inithtml的例子:
宽度和内容要根据不同的情况确定
	var lists;
	lists="<select size='15' name='D1' style='border-style: solid; border-width: 1px;width=173; height:201' onclick=\"parent.document.all.field_大类.value=this.value;parent.document.focus();\">";
	lists=lists+"<option value=\"化学\" >化学</option>";
	lists=lists+"<option value=\"化学\" >金相</option>";
	lists=lists+"<option value=\"化学\" >性能</option>";		
	lists=lists+"</select>";
一个带事件的例子:点击选择文字的时候,会执行该函数.可以做到同步执行另外一些值
<script>
function 请托单位Click(sval1,sval2)
{
	alert(sval1+":"+sval2);//显示查询语句中对应的第一个和第二个字段值
}
</script>
<button tabindex="999" style="background:#eeeeee url('images/button/dropdown.jpg') no-repeat fixed -2 0; cursor:hand;
border: 1 solid #000048; width:17px; height:20px" 
onclick="DropDown('请托单位','select 单位名称,类别+\':\'+单位名称 mc2 from JC请托单位 order by 类别,单位名称',false,'','请托单位Click')">
</button>

*/
function DropDown(boxnames,sqls,forcerenew,inithtml,listclick)
{
	function MCT()
	{
		this.top=-1;
		this.left=-1;
	}

	var	boxobj=document.getElementById(boxnames);
	var boxobjval=boxobj.value;
	if(inithtml==null)inithtml="";
	if(boxobj.drophtml==null)boxobj.drophtml="";

	var parObj = boxobj;
	var mc=new MCT();
	mc.top =  0;
	mc.left = 0;
	var T=true;
	while(parObj && T){
		//alert(parObj.tagName);
		if(parObj.tagName=="FRAME" || parObj.tagName=="IFRAME")
		{
			T=false;
			break;
		}

		mc.left += parObj.offsetLeft;
		mc.top += parObj.offsetTop;
//alert(parObj.tagName+":"+parObj.offsetLeft+":"+mc.left);
		if (!parObj.offsetParent)
		{
			mc.top -=  parObj.ownerDocument.body.scrollTop;
			mc.left -= parObj.ownerDocument.body.scrollLeft;
		}
		if(!parObj.offsetParent && parObj.ownerDocument.parentWindow.frameElement)
			parObj = parObj.ownerDocument.parentWindow.frameElement;
		else
			parObj = parObj.offsetParent;
	}
	var oPopup= window.createPopup();
	var oPopDoc = oPopup.document;
	var oPopBody = oPopDoc.body;

	var listleft,listtop;
	var listwidth=boxobj.clientWidth+10;
	var listheight=201;
	var lists;

	var s1,s2;
	var colc;
	var defaultselected="";
	if(listwidth<110)listwidth=110;
	if(inithtml.length==0)
	{
		if(boxobj.drophtml.length==0 || forcerenew)
		{   
			var rs=new RecordSet();
			rs.open(sqls);//alert('open');
			if(rs.errors.length>0)
			{
				alert(rs.errors);
				rs.close();
				return;
			}
			colc=rs.columncount;
			
			if(listclick==null)
				lists="<select size='15' name='D1' style='overflow:auto;border-style: solid; border-width: 1px;width="+listwidth+"; height:201' onclick=\"window.opener.document.all."+boxnames+".value=this.value;window.close();\">";
			else
				lists="<select size='15' name='D1' style='overflow:auto;border-style: solid; border-width: 1px;width="+listwidth+"; height:201' onclick=\"window.opener.document.all."+boxnames+".value=this.value;window.close();window.opener."+listclick+"(this.value,this.options[this.options.selectedIndex].val2);\">";
			//lists=lists+"<option value='&lt;ff&gt;'>&lt;ff&gt;</option><option value='bb'>bb</option>";
			lists=lists+"<option val2='' value=\""+""+"\" >"+""+"</option>";
			for(var r=0;r<rs.recordcount;r++)
			{
				
				s1=rs.rows(r,0).replace(/</g,"&lt;");//特殊字符替换:  <变成&lt;  
				if(colc>1)
				{
					s2=rs.rows(r,1).replace(/</g,"&lt;");
				}
				else
				{
					s2=s1;
				}
				if(boxobjval==rs.rows(r,0))
					defaultselected="";//"selected";
				else
					defaultselected="";
				
				lists=lists+"<option  val2=\""+s2.replace(/"/g,"&quot;")+"\"   value=\""+s1.replace(/"/g,"&quot;")+"\"  "+defaultselected+">"+s2+"</option>";
			}
			lists=lists+"</select>";
			rs.close();
		}
		else
		{
			lists=boxobj.drophtml;
		}
	}
	else
	{
		lists=inithtml;
	}
	
		
	listleft=mc.left+3;//这是相对于页面的位置
	listleft=listleft+(event.screenX-event.clientX);//利用鼠标知道屏幕位置和窗体位置的特性求出偏差,校正要显示的窗体位置
	listtop=mc.top+boxobj.clientHeight+4;
	listtop=listtop+(event.screenY-event.clientY);
	
	//oPopup.show(mc.left+2,mc.top+boxobj.clientHeight+4,listwidth,listheight, document.body);
	
	//showModelessDialog("droplist.htm?rnd="+Math.random(), document, "dialogLeft:"+(listleft)+"px;dialogTop:"+(listtop)+"px;dialogWidth:"+listwidth+"px; dialogHeight:"+listheight+"px; status:0;help: no;resizable:yes;");
	if(inithtml.length>0)
	{
		lists=lists.replace(/parent.document.focus/g,"window.close");
		lists=lists.replace(/parent./g,"window.opener.");
	}
	document.selectstrfordrop=lists;
	boxobj.drophtml=lists;
	var win=window.open("droplist.htm","","height="+(listheight)+",width="+listwidth+",left="+listleft+",top="+listtop+",toolbar=no,directories=no,menubar=no");
	
	
	/*
	lists=lists.replace(/parent.document.focus/g,"window.close");
	lists=lists.replace(/parent.document/g,"xzypri[1]");	
	var xzypri=new Array();
	xzypri[0]=lists;
	xzypri[1]=document;
	alert('a');
	showModelessDialog("droplist.htm", xzypri, "dialogLeft:"+(listleft)+"px;dialogTop:"+(listtop)+"px;dialogWidth:"+listwidth+"px; dialogHeight:"+listheight+"px; status:0;help: no;resizable:yes;");
	*/
	
	
}
function DropDownOld(boxnames,sqls,forcerenew,inithtml,listclick)
{
	//alert('d');
	function MCT()
	{
		this.top=-1;
		this.left=-1;
	}
	var	boxobj=document.getElementById(boxnames);
	var boxobjval=boxobj.value;
	if(inithtml==null)inithtml="";
	if(boxobj.drophtml==null)boxobj.drophtml="";

	var parObj = boxobj;
	var mc=new MCT();
	mc.top =  0;
	mc.left = 0;
	var T=true;
	while(parObj && T){
		//alert(parObj.tagName);
		if(parObj.tagName=="FRAME" || parObj.tagName=="IFRAME")
		{
			T=false;
			break;
		}

		mc.left += parObj.offsetLeft;
		mc.top += parObj.offsetTop;

		if (!parObj.offsetParent)
		{
			mc.top -=  parObj.ownerDocument.body.scrollTop;
			mc.left -= parObj.ownerDocument.body.scrollLeft;
		}
		if(!parObj.offsetParent && parObj.ownerDocument.parentWindow.frameElement)
			parObj = parObj.ownerDocument.parentWindow.frameElement;
		else
			parObj = parObj.offsetParent;
	}
	
	var oPopup= window.createPopup();
	var oPopDoc = oPopup.document;
	var oPopBody = oPopDoc.body;

	var listwidth=boxobj.clientWidth+18;
	var listheight=201;
	var lists;
	var s1,s2;
	var colc;
	var defaultselected="";
	if(inithtml.length==0)
	{
		if(boxobj.drophtml.length==0 || forcerenew)
		{
			var rs=new RecordSet();
			rs.open(sqls);//alert('open');
			if(rs.errors.length>0)
			{
				alert(rs.errors);
				rs.close();
				return;
			}
			colc=rs.columncount;
			
			if(listclick==null)
				lists="<select size='15' name='D1' style='border-style: solid; border-width: 1px;width="+listwidth+"; height:201' onclick=\"parent.document.all."+boxnames+".value=this.value;parent.document.focus();\">";
			else
			{
				lists="<select size='15' name='D1' style='border-style: solid; border-width: 1px;width="+listwidth+"; height:201' onclick=\"parent.document.all."+boxnames+".value=this.value;parent.document.focus();parent."+listclick+"(this.value);\">";
			}
			//lists=lists+"<option value='&lt;ff&gt;'>&lt;ff&gt;</option><option value='bb'>bb</option>";
			lists=lists+"<option value=\""+""+"\" >"+""+"</option>";
			for(var r=0;r<rs.recordcount;r++)
			{
				
				s1=rs.rows(r,0).replace(/</g,"&lt;");//特殊字符替换:  <变成&lt;  
				if(colc>1)
				{
					s2=rs.rows(r,1).replace(/</g,"&lt;");
				}
				else
				{
					s2=s1;
				}
				if(boxobjval==rs.rows(r,0))
					defaultselected="";//"selected";
				else
					defaultselected="";
				
				lists=lists+"<option value=\""+s1.replace(/"/g,"&quot;")+"\" "+defaultselected+">"+s2+"</option>";
			}
			lists=lists+"</select>";
			rs.close();
		}
		else
		{
			lists=boxobj.drophtml;
		}
	}
	else
	{
		lists=inithtml;
	}

	oPopBody.innerHTML=lists;
	boxobj.drophtml=lists;
	//alert(boxobj.drophtml);
	oPopup.show(mc.left+2,mc.top+boxobj.clientHeight+4,listwidth,listheight, document.body);
}
//███████████████████████████████████████████████████████████████████████
//获取当前网页的文件名
//如http://127.0.0.1/lhjc\test.htm?dd 则返回 test.htm
//测试样例:http://127.0.0.1/lhjc\test.htm?dd->test.htm
//         http://127.0.0.1/lhjc\test.htm?id=1&back=cctv.htm->test.htm
function GetPageName()
{
	var fn=location.href+"?";
	var wn=fn.indexOf("?");
	fn=fn.substring(0,wn);
	var rval=fn.replace(/^.+\/(.+)$/,'$1');
	return rval
}
//这个函数不是很可靠,对于http://127.0.0.1/lhjc/a.htm/a.htm就会出错
function GetUrlPath()//获取当前页面的路径,如:http://127.0.0.1/lhjc/jst_main.htm,返回http://127.0.0.1/lhjc/
{
	var fn=location.href+"?";
	var pagename=GetPageName();
	var ini=fn.indexOf(pagename);
	var rval="";
	if(ini>-1)
	{
		rval=(fn.substring(0,ini));
	}
	return rval;
}

function ControlTest()
{
	var rs=new RecordSet();
	var rval=false;
	rs.open("ControlTest:"+GetPageName());
	if(rs.errors.length>0)
	{
		alert(rs.errors);
		rs.close();
		return false;
	}
	else
	{
		rval=(rs.rows(0,0)=="1");
		rs.close();
		return (rval);
	}
}
function ControlTestTo()
{
	var rval=ControlTest();
	if(!rval)
	{
		var PageObj=document.body;
		var objlen=PageObj.childNodes.length;
		for(var i=0;i<objlen;i++)
		{
			PageObj.removeChild(PageObj.childNodes[0]);
		}
		document.write("none");
	}
	return rval;
}
//███████████████████████████████████████████████████████████████████████
//几个从服务器获取简短信息的小函数

//用 getrsval("新调度编号:"+fuhao)也可以操作小过程
//获取当前登录用户的相应属性
//姓名
function GetUserPri(pri)//获取用户属性
{
	var rs=new RecordSet();
	var rval="";
	rs.open("帐号属性:"+pri);
	if(rs.errors.length>0)
	{
		alert(rs.errors);
		rs.close();
		return "";
	}
	else
	{
		rval=rs.rows(0,0);
		rs.close();
		return rval;
		
	}
}
//从服务器获取时间信息,part可以是:日期/时间/日期时间,默认是日期
function GetCurrentDate(part)
{
	//因为用户要求日期都不加时间
	if(part=="日期时间")part="日期";

	var rs=new RecordSet();
	var rval="";
	if(part==null)part="日期";
	rs.open("当前日期:"+part);
	if(rs.errors.length>0)
	{
		alert(rs.errors);
		rs.close();
		return "";
	}
	else
	{
		rval=rs.rows(0,0);
		rs.close();
		return rval;
		
	}	
}


//███████████████████████████████████████████████████████████████████████
function IsNumber(num)
{
	if(isNaN(Number((num))))
    {
        return false;   			
    }	
	else
	{
		if(num+""=="")return false;
		return true;
	}
}
function ReadSerial(no)
{
	var xzy="";
	try
	{
		ePass.OpenDevice(no, "");
		xzy=ePass.GetStrProperty(7,0,0);
		ePass.CloseDevice();
	}
	catch (e)
	{
		//alert("myerror:" + e.number+"\r\n"+e.message);
	}	
	return xzy;
}
//███████████████████████████████████████████████████████████████████████
//四舍五入,//最多支持6位小数的四舍五入
function MyRound(numberRound,roundDigit){
var sOffsetPara = 1000000 ;
return parseFloat(parseFloat(numberRound*sOffsetPara).toFixed(roundDigit)/sOffsetPara).toFixed(roundDigit) * 1.0;
}
//███████████████████████████████████████████████████████████████████████
function MyVal(num)
{
	if(isNaN(Number((num))))
    {
        return 0;   			
    }
	return Number((num));
}
//███████████████████████████████████████████████████████████████████████
//设置edit页面上所有的录入框,为只读,并且按钮不可见
//在只读状态下,需要执行这个函数
function 设置页面为只读()
{
	var obj =document.all;
	for(var i=0 ;i<obj.length; i++)
	{
		if(obj[i].tagName=="INPUT" || obj[i].tagName=="TEXTAREA")
		{
			obj[i].readOnly=true;
			obj[i].onclick=function(){;}
			obj[i].onfocus=function(){;}
			if(obj[i].type.toUpperCase()=="CHECKBOX")
			{
				//obj[i].disabled=true;
				obj[i].style.display="none";
			}
			obj[i].style.cursor="auto";
		}
		if(obj[i].tagName=="BUTTON")
		{
			obj[i].style.display="none";
		}
		if(obj[i].tagName=="A")
		{
			if(obj[i].id=="ImgTitle")
			{
				obj[i].innerHTML="";
			}
		}
	}		
}
//███████████████████████████████████████████████████████████████████████
//返回重复len次的c串
//如 alert(Space("c",5)); 返回 ccccc
function Space(c,len)
{
	var i;
	var rval;
	rval="";
	for(i=0;i<len;i++)
	{
		rval=rval+c;
	}
	return rval;
}
//███████████████████████████████████████████████████████████████████████
//去掉首尾的空格
function trim(str)
{
	return str.replace(/^\s*/,'').replace(/\s*$/,'');
}
//███████████████████████████████████████████████████████████████████████
//从xml的节点node,按照名称tagName获取该节点下的某个子节点的text,
function GetItemVal(node,tagName)
{
	//alert(Row.childNodes[0].tagName);
	//alert(node.childNodes.length);
	var i;
	for(i=0;i<node.childNodes.length;i++)
	{
		if(node.childNodes[i].tagName.toUpperCase()==tagName.toUpperCase())
		{
			return node.childNodes[i].text;
			break;
		}
	}
	if(i==node.childNodes.length)
	{
		return "GetItemVal()不存在["+tagName+"]的节点";
	}
}
function SetPageShow(IDIN,TBIN)
{
	if(window.opener)
	{
	    var rs=new RecordSet();
	    var ID;
		var TB;
		if(IDIN==null)IDIN="";
		if(TBIN==null)TBIN="";

		if(IDIN=="")
			ID=window.opener.xzy[1];
		else
			ID=IDIN;

		if(TBIN=="")
			TB=window.opener.IETableNameQuery;
		else
		{
			if(TBIN=="1")TB="VXZY_ZBGG";
		}
	    rs.open("select * from "+TB+" where id="+ID);
	    if(rs.recordcount>0)
	    {
	    	var PageObj = document.all;
			var haveu;
		    for(i=0 ;i<PageObj.length; i++)
		    {
		    	haveu=false;
				if(PageObj[i].tagName=="DIV")
				{
					haveu=true;
				}
				if(PageObj[i].tagName=="A")
				{
					haveu=true;
				}	
				if(PageObj[i].tagName=="SPAN")
				{
					haveu=true;
				}				
				if(haveu)
				{
					if(PageObj[i].fieldname!=null)
					{
						
						if(PageObj[i].fieldname=="正文")
						{
							PageObj[i].innerHTML=getrsval("getzhengwen:"+ID);
						}
						else if(PageObj[i].fieldname=="正文2")
						{
							PageObj[i].innerHTML=getrsval("getzhengwen2:"+ID);
						}
						else
						{
							PageObj[i].innerHTML=rs.rows(0,PageObj[i].fieldname);
						}
					}			
				}
		    }
	    }
	    rs.close();
	}
}

function 查询()
{
	var recordperpage;	
	recordperpage=10;
	Start查询(GetEditSqls(GetEditXMLQuery(SearchContent,IETableNameQuery)),QueryResultContent,recordperpage,null,"pageshow");
}

//███████████████████████████████████████████████████████████████████████
//常用代码
/*
1.★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
//表格遍历
	var tbodyobj,trobj,tdobj,checkobj;
	var deleteids="";
	tbodyobj=document.all.QueryTable.childNodes[0];
	for(var i=1;i<tbodyobj.childNodes.length;i++)//第一行是标题行,所以不用检查
	{
		trobj=tbodyobj.childNodes[i];
		//alert(trobj.dataid);
		tdobj=trobj.childNodes[0];
		checkobj=tdobj.childNodes[0];
		if(checkobj.checked)
		{
			//alert(trobj.dataid);
			deleteids=deleteids+trobj.dataid+",";
		}
	}
2.★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
//生成XML
//"<条件><查询表><表名>"+IETableName+"</表名></查询表><条件设定><fieldname>id</fieldname><setvalue>-1</setvalue></条件设定></条件>"
	var objDom
	var objRoot
	var objNode
	var objNodeValue
	var s
	
	objDom = new ActiveXObject("Microsoft.XMLDOM");
	objDom.async=false;
	objDom.preserveWhiteSpace = true;
	//-----------------------------------------------------------------------------------
	objRoot = objDom.createElement("条件");
	objDom.appendChild(objRoot); //添加根节点
	//-----------------------------------------------------------------------------------
	objNode = objDom.createElement("查询表");
	
	objNodeValue = objDom.createElement("表名");
	objNodeValue.text =IETableName;
	objNode.appendChild(objNodeValue);

	objRoot.appendChild(objNode);		
	//-----------------------------------------------------------------------------------
	objNode = objDom.createElement("条件设定");

	objNodeValue = objDom.createElement("fieldname");
	objNodeValue.text ="id";
	objNode.appendChild(objNodeValue);

	objNodeValue = objDom.createElement("setvalue");
	objNodeValue.text ="-1";
	objNode.appendChild(objNodeValue);

	objRoot.appendChild(objNode);
	//-----------------------------------------------------------------------------------
	s=objDom.xml

	objDom = null;
	objRoot = null;
	objNode = null;
	objNodeValue = null;
	delete objDom;
	CollectGarbage();
		//查询("<条件><查询表><表名>"+IETableName+"</表名></查询表><条件设定><fieldname>id</fieldname><setvalue>-1</setvalue></条件设定></条件>");
3.★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
//解析XML
	var Xsldom=new ActiveXObject("Microsoft.XMLDOM");
	var Table,Row,Col;
	Xsldom.async=false;
	Xsldom.loadXML(xmls);
	
	
	if(Xsldom.documentElement.tagName=="resultid")
	{
		
	}
	else if(Xsldom.documentElement.tagName=="error")
	{
		var s="发生了意外错误:\n\n"+Xsldom.documentElement.childNodes[0].text;
		alert(s);
	}

*/