﻿	var txt="";//记录输入框里的内容，目的是在输入中文时，判断输入是否改变，不至于每次敲键都要执行查询
	var xmlHttp;
	var completeDiv;
	var inputField;
	var nameTable;
	var nameTableBody;
	var num=10;//下拉列表项数量

	function createXMLHttpRequest() {//创建XMLHttpRequest对象
		if (window.ActiveXObject) {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}else if (window.XMLHttpRequest) {
			xmlHttp = new XMLHttpRequest();
		}
	}

	/*function initVars() {
		inputField = document.getElementById("searchWords");
		nameTable = document.getElementById("name_table");
		completeDiv = document.getElementById("popup");
		nameTableBody = document.getElementById("name_table_body");

	}*/
	function initVars(obj) {
		inputField = document.getElementById(obj);
		nameTable = document.getElementById("name_table");
		completeDiv = document.getElementById("popup");
		nameTableBody = document.getElementById("name_table_body");

	}
	function findNames() {//刷新搜索结果集
		initVars("searchWords");
		if (inputField.value.length > 0) {//如果有输入值
			var n=inputField.value.split(' ').length;//判断输入的关键字数量
			if(n>3){//超过三个字就不做查询
				clearNames();
				return;
			}
			createXMLHttpRequest();
			var url = "/servlet/AutoCompleteServlet?lb=en&n="+n+"&names=" + escape(inputField.value);
			xmlHttp.open("GET", url, true);
			xmlHttp.onreadystatechange = callback;
			xmlHttp.send(null);
		} else {
			clearNames();
		}
	}
	function findZcyNames() {//刷新搜索结果集
		initVars("searchWords");
		if (inputField.value.length >0&&inputField.value!=txt) {//如果有输入值
			createXMLHttpRequest();
			var url = "/servlet/AutoCompleteServlet?lb=zcy&names=" + escape(inputField.value);
			xmlHttp.open("GET", url, true);
			xmlHttp.onreadystatechange = callback;
			xmlHttp.send(null);
		} else {
			clearNames();
		}
	}
    function findHhwNames() {//刷新搜索结果集
		initVars("searchWords_other");
		if (inputField.value.length >0&&inputField.value!=txt) {//如果有输入值
			createXMLHttpRequest();
			var url = "/servlet/AutoCompleteServlet?lb=hhw&names=" + escape(inputField.value);
			xmlHttp.open("GET", url, true);
			xmlHttp.onreadystatechange = callback;
			xmlHttp.send(null);
		} else {
			clearNames();
		}
	}
	function findFactorNames() {//刷新搜索结果集
		initVars("searchWords_other");
		if (inputField.value.length > 0) {//如果有输入值
			createXMLHttpRequest();
			var url = "/servlet/AutoCompleteServlet?lb=factor&names=" + escape(inputField.value);
			xmlHttp.open("GET", url, true);
			xmlHttp.onreadystatechange = callback;
			xmlHttp.send(null);
		} else {
			clearNames();
		}
	}
	function findDiseaseNames() {//刷新搜索结果集
		initVars("searchWords_other");
		if (inputField.value.length > 0) {//如果有输入值
			createXMLHttpRequest();
			var url = "/servlet/AutoCompleteServlet?lb=disease&names=" + escape(inputField.value);
			xmlHttp.open("GET", url, true);
			xmlHttp.onreadystatechange = callback;
			xmlHttp.send(null);
		} else {
			clearNames();
		}
	}
	function callback() {//查找结果集
		if (xmlHttp.readyState == 4) {
			if (xmlHttp.status == 200) {
				var name = xmlHttp.responseXML.getElementsByTagName("name")[0].firstChild.data;
				setNames(xmlHttp.responseXML.getElementsByTagName("name"));
			}else if (xmlHttp.status == 204){
				clearNames();
			}else{
				clearNames();
			}
		}
	}

	function setNames(the_names) {//将查找到的结果集设入下拉列表
		clearNames();
		var size = the_names.length;
		if(size>num)size=num;//如果结果集大于限制数量，就重置为限制数量
		setOffsets();
		var row, cell, txtNode;
		for (var i = 0; i < size; i++) {
			var nextNode = the_names[i].firstChild.data;
			row = document.createElement("tr");
			cell = document.createElement("td");
			cell.onmouseout = function() {this.className='mouseOver';};
			cell.onmouseover = function() {this.className='mouseOut';};
			cell.setAttribute("bgcolor", "#FFFAFA");
			cell.setAttribute("border", "0");
			cell.onclick = function() { populateName(this); } ;

			txtNode = document.createTextNode(nextNode);
			cell.appendChild(txtNode);
			row.appendChild(cell);
			nameTableBody.appendChild(row);
		}
	}

	function setOffsets() {//定位下拉列表的长宽高和边框
		var end = inputField.offsetWidth;
		var left = calculateOffsetLeft(inputField);
		var top = calculateOffsetTop(inputField) + inputField.offsetHeight;
		completeDiv.style.border = "black 1px solid";
		completeDiv.style.left = left + "px";
		completeDiv.style.top = top + "px";
		nameTable.style.width = end + "px";
	}

	function calculateOffsetLeft(field) {
	  return calculateOffset(field, "offsetLeft");
	}

	function calculateOffsetTop(field) {
	  return calculateOffset(field, "offsetTop");
	}

	function calculateOffset(field, attr) {
	  var offset = 0;
	  while(field) {
		offset += field[attr];
		field = field.offsetParent;
	  }
	  return offset;
	}

	function populateName(cell) {//将某一结果选项的值设入输入文本框
		inputField.value = cell.firstChild.nodeValue;
		clearNames();//使下拉框消失
	}

	function clearNames() {//清空查询结果集列表
		var ind = nameTableBody.childNodes.length;//得到nameTableBody节点的数量
		for (var i = ind - 1; i >= 0 ; i--) {
			 nameTableBody.removeChild(nameTableBody.childNodes[i]);//删除每一个项目
		}
		completeDiv.style.border = "none";//将popup的样式设为none
	}
