function getRef(sXML,UserInfo,nShow)
{
	var dom = new ActiveXObject("MSXML2.DOMDocument");
	//构造sql语句
	if (!dom.loadXML(sXML))
	{
		alert("参照XML有误！");
		return "<Data/>"
	}

	nShow = GetLong(nShow);	//当有一条记录时是否显示列表
	
	var arg = new Object();
	arg.sHeadXML = sXML;
	
	dom.loadXML(sXML);
	var elRoot = dom.documentElement;
	arg.UserInfo = UserInfo;
	arg.sValue = GetString(elRoot.getAttribute("Value"));
	arg.sql = GetString(elRoot.getAttribute("SQL"));
	arg.sFilter = GetString(elRoot.getAttribute("Filter"));
	arg.nPage = 1;
	arg.nFilterType = GetLong(elRoot.getAttribute("ftinFilterType"));
	sXML = getRefXML(arg);
	arg.sXML = sXML

	dom.loadXML(sXML);
	elRoot = dom.documentElement;
	if (elRoot.childNodes.length == 1 && !nShow) return elRoot.childNodes(0).xml;

	var sURL = "/Public/asp/Ref.asp?UserInfo=" + UserInfo;

	var sReturn = showModalDialog(sURL, arg, "Help=no;status:no;dialogWidth=580px;dialogHeight=460px;scroll=no;"); 
	return sReturn;
}

function getRefXML(arg)
{
	var UserInfo,sValue,sql,sFilter;
	UserInfo = arg.UserInfo;
	sValue = arg.sValue;
	sql = arg.sql;
	sFilter = arg.sFilter;
	
	var dom = new ActiveXObject("MSXML2.DOMDocument");
	var arrFilter = sFilter.split(",");
	sFilter = " and ( ";
	for (var i = 0; i < arrFilter.length; i++)
	{
		if (i > 0) sFilter += " or ";
		sFilter += arrFilter[i] + " like '%" + sValue + "%'"
	}
	sFilter += " ) "
	sql = sql.replace(/##/,sFilter);
	
	//查询数据
	dom.loadXML("<Data/>");
	elRoot = dom.documentElement;
	elRoot.setAttribute("PageSize",15);
	elRoot.setAttribute("SQL",sql);
	elRoot.setAttribute("PageIndex",GetLong(arg.nPage));
	elRoot.setAttribute("FilterType",GetLong(arg.nFilterType));
	var sXML;
	sXML = "<Data>"
	     + UserInfo
	     + dom.xml
	     + "</Data>"
	//alert(sXML);	     
	sXML = KT_Get(sXML);
	//alert(sXML);
	return sXML;
}

function refSetFilterInit(elRoot)
{
	var sql = GetString(elRoot.getAttribute("SQL"))
	var sFilter = GetString(elRoot.getAttribute("FilterInit"));
	if (sFilter == "") return true;	
	var arrFilter = sFilter.split("##");
	var mysql = ""
	for (var i = 0; i < arrFilter.length; i++)
	{
		var arrFilter1 = arrFilter[i].split(",");
		var s1 = arrFilter1[0];
		var s2 = GetLong(arrFilter1[1]);
		var s3 = arrFilter1[2];
		var s4 = "";
		if (arrFilter1.length > 3)
			s4 = arrFilter1[3];
		if (s2 == 0)
		{
			//alert(xmlData.xml)
			var v1 = xm_getRowNodeValue(xmlData,0,s1);
			if (v1 == "")
			{
				v1 = xm_getCellValue(s1);	
			}
		}
		else
			var v1 = List1.getValue(0,s1);
		if (v1 == "")
		{
			alert(s3 + "不存在");
			var o = document.all(s4);
			if (o != null && !o.disabled) o.focus();
			return false;
		}
		mysql += " and " + s1 + "='" + v1 + "' ";
	}
	if (mysql != "")
		sql = sql.replace(/##/,mysql+"##");

	elRoot.setAttribute("SQL",sql)
	return true;
}

function refList(sValue,nRow,nCol)
{
	var dom = new ActiveXObject("MSXML2.DOMDocument");
	var sName = xmlHead.documentElement.childNodes(nCol-1).getAttribute("ID")
	dom.loadXML(xmlHead.documentElement.childNodes(nCol-1).childNodes(0).xml);
	var elRoot = dom.documentElement
	elRoot.setAttribute("Value",sValue)
	
	var sFields = GetString(elRoot.getAttribute("Fields"))
	var arrFields = sFields.split(",");
	var sFields1 = GetString(elRoot.getAttribute("Fields1"))
	var arrFields1 = sFields1.split(",");
	if (sFields1 == "")
		arrFields1 = sFields.split(",");
		
	if (!refSetFilterInit(elRoot)) return "";
	
	var sXML = dom.xml
	sXML = getRef(sXML,UserInfo,0)
	if (!dom.loadXML(sXML)) return sValue;
	
	for (var i = 0; i < arrFields.length; i++)
	{
		var sFieldValue = xm_getChildNodeValue(dom,arrFields[i])
		List1.setValue(nRow,arrFields1[i],sFieldValue);
	}
	
	for (var i = 0; i < arrFields1.length; i++)
	{
		if (sName == arrFields1[i])
		{
			sName = arrFields[i];
			break;
		}
	}
	return xm_getChildNodeValue(dom,sName)
}

function refKeyDown(sValue,nTemplateType,nCol)
{
	if (window.event.keyCode != 13) return "";
	
	var dom = new ActiveXObject("MSXML2.DOMDocument");
	dom.loadXML(xmlCard.documentElement.childNodes(nCol-1).childNodes(0).xml);
	var elRoot = dom.documentElement
	elRoot.setAttribute("Value",sValue)

	if (!refSetFilterInit(elRoot)) return "";
	
	var sXML = dom.xml
	sXML = getRef(sXML,UserInfo,0)
	
	refUpdate(elRoot,sXML);	
	
	window.event.keyCode = 9;
	return sXML;
}

function refBlur(sValue,nTemplateType,nCol)
{
	if (sValue != "") return;
	
	var dom = new ActiveXObject("MSXML2.DOMDocument");
	dom.loadXML(xmlCard.documentElement.childNodes(nCol-1).childNodes(0).xml);
	var elRoot = dom.documentElement
	var sXML = "<Row/>"
	refUpdate(elRoot,sXML);
}

function refUpdate(elRoot,sXML)
{
	var dom = new ActiveXObject("MSXML2.DOMDocument");

	var sFields = GetString(elRoot.getAttribute("Fields"))
	var arrFields = sFields.split(",");
	var sFields1 = GetString(elRoot.getAttribute("Fields1"))
	var arrFields1 = sFields1.split(",");
	if (sFields1 == "")
		arrFields1 = sFields.split(",");

	if (!dom.loadXML(sXML)) return;
	for (var i = 0; i < arrFields.length; i++)
	{
		var sFieldValue = xm_getChildNodeValue(dom,arrFields[i])
		xm_setRowNodeValue(xmlData, 0, arrFields1[i],sFieldValue)
		xm_setCellValue(arrFields1[i],sFieldValue)
	}
	
}