function dropdown(id, stype) {
var inputID = document.getElementById(id);
var loadID = id + '' + stype;
var divDataTable = document.getElementById(loadID);
//inputID.parentNode.insertBefore(divDataTable, inputID);
divDataTable.style.display = "none";
divDataTable.className = "dropdown";
inputID.tableHint = null;
if (inputID.value == "") {return;} //值为空 退出
var DataUrl = "aaa.asp?id=" + stype;
var model = new Model("script", loadID, divDataTable);
model.dropdown = this;
this.model = model;
model.stringUrl = DataUrl.replace("?","?key=" + escape(inputID.value) + "&");
model.processData = function () {
var stringData = window["dropdownData"];
var stringInfo = stringData.split("|");
if (stringInfo.length > 1) {
//打开层定位
divDataTable.style.display = "block";
var arrayPosition = GetOffsetPos(inputID);
divDataTable.style.left = arrayPosition[0] + "px";
divDataTable.style.top = arrayPosition[1] + 3 + "px";
divDataTable.style.marginTop = inputID.clientHeight + 1 + "px";
divDataTable.style.width = (inputID.clientWidth < 100 ? 100 : inputID.clientWidth) +5+ "px";
//创建table表格
var tableContainer = document.createElement("table");
tableContainer.className = "table";
tableContainer.cellPadding = 0;
tableContainer.cellSpacing = 0;
var trHeader = tableContainer.insertRow(0);
trHeader.className = "trHeader";
var tdTitle = trHeader.insertCell(0);
tdTitle.colSpan = 2;
tdTitle.innerHTML = "搜索提示↓↑";
for (var i=0;i<stringInfo.length-1;i++) {
var arrayCodeAndName = stringInfo[i].split("-");
var trRecord = tableContainer.insertRow(parseInt(i) + 1);
var tdTitle = trRecord.insertCell(0);
var tdKey = arrayCodeAndName[0] + " " + arrayCodeAndName[1];
tdTitle.innerHTML = tdKey.replace(inputID.value.toUpperCase(),"<span>"+inputID.value.toUpperCase()+"</span>");
if (arrayCodeAndName[2] > "") {
var tdInfo = trRecord.insertCell(1);
tdInfo.innerHTML = arrayCodeAndName[2];
}
trRecord.stringCodeAndName = arrayCodeAndName[0];
trRecord.inputTarget = inputID;
//鼠标经过
trRecord.onmouseover = function () {
this.className = "overLine";
}
//鼠标离开
trRecord.onmouseout = function () {
this.className = "";
}
//鼠标点选
trRecord.onmousedown = function () {
this.inputTarget.setLine(this);
}
inputID.onFocus = function () {
divDataTable.style.display = "block";
}
inputID.onblur = function () {
divDataTable.innerHTML = "";
divDataTable.style.display = "none";
};
inputID.setLine = function (line) {
if (line != null) {
line.className = "overLine";
}
inputID.line = line;
line.className = "overSelectedLine";
inputID.value = line.stringCodeAndName;
};
}
divDataTable.innerHTML = "";
divDataTable.appendChild(tableContainer);
} else {
divDataTable.style.display = "none";
divDataTable.innerHTML = "";
}
}
model.load();
//alert(window.addEventListener);
};
var LoaderScript = function () {
this.elementContainer = null;
this.init = function (stringContainerId) {
if (stringContainerId) {
this.elementContainer = document.getElementById(stringContainerId);
} else {
this.elementContainer = document.createElement("div");
this.elementContainer.style.display = "none";
document.body.appendChild(this.elementContainer);
}
};
this.load = function (src, callback, valueCallback) {
var elementLoader = document.createElement("script");
elementLoader.type = "text/javascript";
elementLoader.language = "javascript";
elementLoader.charset = "gb2312";
elementLoader.src = src;
elementLoader.valueCallback = valueCallback;
elementLoader[document.all ? "onreadystatechange" : "onload"] = this.unload;
elementLoader.callback = callback;
this.elementContainer.appendChild(elementLoader);
};
this.unload = function () {
if (document.all) {
if (this.readyState != "loaded" && this.readyState != "complete") {
return;
}
}
if (this.callback) {
this.callback(this.valueCallback);
}
this.callback = null;
this[document.all ? "onreadystatechange" : "onload"] = null;
//this.parentNode.removeChild(this);
};
};
var Model = function (stringType, stringContainerId, stringdivTable) {
this.getRandomString = function () {
var date = new Date();
return date.getTime();
};
this.stringType = stringType.toLowerCase();
this.responseText = null;
this.booleanReturnForced = false;
switch (this.stringType) {
case "script":
this.loader = new LoaderScript();
this.loader.init(stringContainerId);
break;
}
this.stringUrl = "";
this.stringMark = "@RANDOM@";
this.callback = function (responseText) {
var model = arguments.callee.model;
switch (model.stringType) {
case "script":
model.processData(responseText);
model.updateView(responseText);
break;
}
};
this.callback.model = this;
this.processData = function () {};
this.updateView = function () {};
this.stringContent = null;
this.intThread = -1;
this.intInterval = 5000;
this.start = function () {
this.stop();
this.load();
this.intThread = setInterval(this.load, this.intInterval);
};
this.stop = function () {
if (this.intThread != -1) {
clearInterval(this.intThread);
}
this.intThread = -1;
};
this.arrayUrl = [];
this.loadScriptUrl = function () {
var model = arguments.callee.model;
if (model.arrayUrl.length > 0) {
var stringUrl = model.arrayUrl.shift();
model.loader.load(stringUrl.replace(model.stringMark, model.getRandomString()), model.callback, stringUrl);
}
};
this.loadScriptUrl.model = this;
this.load = function () {
var model = arguments.callee.model;
switch (model.stringType) {
case "script":
if (model.stringUrl.constructor == Array) {
model.arrayUrl = [];
for (var i = 0; i < model.stringUrl.length; i++) {
model.arrayUrl.push(model.stringUrl[i]);
setTimeout(model.loadScriptUrl, i * 5000);
}
}
else if (model.stringUrl != "") {
model.loader.load(model.stringUrl.replace(model.stringMark, model.getRandomString()), model.callback, model.stringUrl);
}
break;
}
};
this.load.model = this;
};
function GetOffsetPos(element) {
var posTop = 0, posLeft = 0;
do {
posTop += element.offsetTop || 0;
posLeft += element.offsetLeft || 0;
element = element.offsetParent;
} while (element);
    return [posLeft, posTop];
}