﻿

/*
* Hei100_Suggest.js Create By Feiin
* Email:feiin@qq.com
* 
*/


var curItemIndex = -1;
var curItemCount = 0;
var browserType = 0;
var rawvalue = "";
var isMouseOnSuggest = false;

function setMouseOnSuggest(vl) {
    isMouseOnSuggest = vl;
}
function selectItem(ev) {
    if (document.getElementById("suggest").style.display == "block") {
        var cItems = document.getElementById("ul_suggest").getElementsByTagName("li");

        if (ev.keyCode == '38') {
            //上
            if (curItemIndex >= 0 && curItemIndex < curItemCount) {
                if (curItemIndex < curItemCount) {
                    cItems[curItemIndex].style.backgroundColor = "#fff";
                }
                curItemIndex--;
                if (curItemIndex != -1) {

                    cItems[curItemIndex].style.backgroundColor = "#c7dffa";

                    selectSuggestItemValue(cItems[curItemIndex]);

                }
                else {
                    document.getElementById("SearchKey").value = rawvalue;
                }

            }
            return true;
        }
        else if (ev.keyCode == '40') {
            //下

            if (curItemIndex < curItemCount && curItemIndex >= -1) {
                if (curItemIndex != -1 && curItemIndex < curItemCount - 1) {
                    cItems[curItemIndex].style.backgroundColor = "#fff";
                }

                curItemIndex++;
                if (curItemIndex < curItemCount) {
                    cItems[curItemIndex].style.backgroundColor = "#c7dffa";
                    selectSuggestItemValue(cItems[curItemIndex]);
                }
                else {
                    curItemIndex = curItemCount - 1;
                }
            }
            return true;
        }

    }
    return false;
}


function suggest(ev) {

    if (window.ActiveXObject) {
        browserType = 1; //ie浏览器
    }
    ev = (ev) ? ev : window.event;
    if (selectItem(ev)) {
        return;
    }
    var keyword = document.getElementById("SearchKey").value; //获取查询条件
    rawvalue = keyword;
    if (keyword.length > 0) {
        var patrn = /^[^<>?、？《》=]*$/; //验证输入的内容是否合法
        if (!patrn.exec(keyword)) {
            alert("不能输入非法字符！");
            document.getElementById("SearchKey").value = "";   //清空输入的内容
            return;
        }
        document.getElementById("suggest").style.display = "none";
        Ajax_Search.ResponseXml(keyword, ShowSuggest);
    }
    else {
        document.getElementById("suggest").style.display = "none";
    }

}

function ShowSuggest(rs) {
    if (rs.error == null) {
        suggestShow(rs.value);
    }
    else {
        document.getElementById("suggest").style.display = "none";
    }
}

function setSelectItems(index, cvalue) {
    var cItems = document.getElementById("ul_suggest").getElementsByTagName("li");
    if (curItemIndex > -1 && curItemIndex < curItemCount)
        cItems[curItemIndex].style.backgroundColor = "#fff";
    cItems[index].style.backgroundColor = cvalue;
    curItemIndex = index;

}

//显示信息
function suggestShow(xmlDoc) {
    var moneyMsg = document.getElementById("suggest");
    var opn = "<ul class='suggestul' id='ul_suggest' onmouseover='setMouseOnSuggest(true);' onmouseout='setMouseOnSuggest(false);'>";
    var records = xmlDoc.getElementsByTagName("record").length;
    curItemCount = records;
    curItemIndex = -1;
    if (records > 0) {
        for (i = 0; i < records; i++) {
            opn += "<li class='suggestulli' onmouseover=\"setSelectItems('" + i + "','#c7dffa');\" onmouseout=\"setSelectItems('" + i + "','#FFFFFF');\" onclick=\"selectSuggest(this);\"><span>";
            opn += xmlDoc.getElementsByTagName("word")[i].firstChild.data;
            opn += "</span><span class='suggestSpan'>约" + xmlDoc.getElementsByTagName("count")[i].firstChild.data + "结果</span></li>";
        }
        opn += "<li class='suggestulli' onclick='SuggestClose();'><span>&nbsp;</span><span class='suggestSpan'>关闭</span></li></ul></div><div style='clear:both;'>";
        moneyMsg.innerHTML = opn;
        var obj = document.getElementById("SearchKey");
        var pos = findPos();
        var suggestDiv = document.getElementById("suggest");
        suggestDiv.style.top = pos.Top + 20 + "px";
        suggestDiv.style.left = pos.Left + "px";
        suggestDiv.style.display = "block"; //显示信息
    }
    else {
        document.getElementById("suggest").style.display = "none"; //显示信息
    }
}
//隐藏信息 
function SuggestClose() {
    document.getElementById("suggest").style.display = "none";
}
function suggestHidden() {
    if (!isMouseOnSuggest) {
        document.getElementById("suggest").style.display = "none"; //隐藏信息
    }
}
function selectSuggest(obj) {
    var selectObj;
    if (browserType == 1) {
        selectObj = obj.getElementsByTagName("span")[0].innerText;

    }
    else {
        selectObj = obj.getElementsByTagName("span")[0].textContent;
    }
    document.getElementById("SearchKey").value = selectObj;

    document.getElementById("suggest").style.display = "none"; //隐藏信息
}

function selectSuggestItemValue(obj) {
    var selectObj;
    if (browserType == 1) {
        selectObj = obj.getElementsByTagName("span")[0].innerText;
    }
    else {
        selectObj = obj.getElementsByTagName("span")[0].textContent;
    }
    document.getElementById("SearchKey").value = selectObj;
}

function Pos(top, left) {
    this.Top = top;
    this.Left = left;
}
function findPos() {
    var obj = document.getElementById("SearchKey");

    var curleft = curtop = 0;
    curleft = obj.offsetLeft;
    curtop = obj.offsetTop;
    var obj = obj.offsetParent;
    while (obj) {

        curleft += obj.offsetLeft;
        curtop += obj.offsetTop;
        obj = obj.offsetParent;
    }
    return new Pos(curtop, curleft);
}