var http_request = false;
function createRequest(url) {
	//初始化对象并发出XMLHttpRequest请求
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla或其他除IE以外的浏览器
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType("text/xml");
		}
	} else if (window.ActiveXObject) { // IE浏览器
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");

		   } catch (e) {}
		}
	}
	if (!http_request) {
		alert("不能创建XMLHTTP实例!");
		return false;
	}
	inputField = document.getElementById("key");            
	keyTable = document.getElementById("key_table");
	memorDiv = document.getElementById("pop");
	keyTableBody = document.getElementById("key_table_body");
	if (inputField.value.length > 0) {
		var url = "getKey.jsp?key=" + inputField.value;                        
		http_request.open("GET", url, true);
		http_request.onreadystatechange = callTool;    //调用返回结果处理函数正确显示提示列表
		http_request.send(null);
	} else {
		clearTool();
	}	
}
//返回结果处理函数
function callTool() {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			if(http_request.responseXML==null){                	
			var key = http_request.responseXML.getElementsByTagName("mykey")[0].firstChild.data;
				clearTool();
			}else{
				setKeys(http_request.responseXML.getElementsByTagName("mykey"));
			}
		} else if (http_request.status == 204){
			clearTool();
		}
	}
}
//生成提示列表的内容
function setKeys(the_keys) {            
	clearTool();
	var size = the_keys.length;
	setOffsets();
	var row, cell, txtNode;
	for (var i = 0; i < size; i++) {
		var nextNode = the_keys[i].firstChild.data;
		row = document.createElement("tr");
		cell = document.createElement("td");
		cell.onmouseout = function() {this.className='mouseOver';this.style.background='#FFFAFA';this.style.color='#000000';};
		cell.onmouseover = function() {this.className='mouseOut';this.style.background='#9D741C';this.style.color='#FFFFFF';};
		cell.setAttribute("border", "0");
		cell.onclick = function() { assignKey(this); } ;  
		cell.onkeydown=function(){if(event.keyCode==13){assignKey(this);}};                           
		txtNode = document.createTextNode(nextNode);
		cell.appendChild(txtNode);
		row.appendChild(cell);
		keyTableBody.appendChild(row);
	}
/******************将光标焦点定位在提示列表的第一行上************/
	if(size>0){		
		ObjTable.Load("key_table","TD");
		var oPrev = ObjTable.getNode(0,0);
		iCurRow=0;
		iCurCol=0;
		//设置节点的位置
		ObjTable.curRow = iCurRow;
		ObjTable.curCol = iCurCol;
		oPrev.focus();
		oPrev.bgColor ="#9D741C";
		oPrev.style.color="#FFFFFF";
	}
/**********************************************************/			
}
//设置提示列表框的位置
function setOffsets() {
	var end = inputField.offsetWidth;
	var left =calculateOffset(inputField, "offsetLeft")
	 var top = calculateOffset(inputField, "offsetTop") + inputField.offsetHeight;
	memorDiv.style.border = "none";
	memorDiv.style.background = "#ffffff";
	memorDiv.style.left = left + "px";
	memorDiv.style.top = top + "px";
	keyTable.style.width = end + "px";
}
//计算提示列表框的位置
function calculateOffset(field, attr) {
  var offset = 0;
  while(field) {
	offset += field[attr]; 
	field = field.offsetParent;
  }
  return offset;
}
//将选择的值赋值给用于获取查询关键字的文本框
function assignKey(cell) {
	inputField.value = cell.firstChild.nodeValue;
	clearTool();
}
//移去提示列表
function clearTool() {
	var ind = keyTableBody.childNodes.length;
	for (var i = ind - 1; i >= 0 ; i--) {
		 keyTableBody.removeChild(keyTableBody.childNodes[i]);
	}
	memorDiv.style.border = "none";
}
