﻿/*nvaictrl*/
function drop_mouseover(pos) {
    try { window.clearTimeout(timer); } catch (e) { }
}
function drop_mouseout(pos) {
    var posSel = document.getElementById(pos + "Sel").style.display;
    if (posSel == "block") {
        timer = setTimeout("drop_hide('" + pos + "')", 1000);
    }
}
function drop_hide(pos) {
    document.getElementById(pos + "Sel").style.display = "none";
}
function search_show(pos, searchType, href) {
    document.getElementById(pos + "SearchType").value = searchType;
    document.getElementById(pos + "Sel").style.display = "none";
    document.getElementById(pos + "Slected").innerHTML = href.innerHTML;
    var qtext = document.getElementById(pos + 'q');
    if (qtext.value == "" || qtext.value == "只输入刊名即可") {
        if (searchType == "qikan") {
            qtext.style.color = "#999";
            qtext.value = "只输入刊名即可";
            qtext.onblur = function() { if (this.value == '') { this.value = '只输入刊名即可'; this.style.color = '#999'; }; clearSuggest(); };
            qtext.onclick = function() { if (this.value == '只输入刊名即可') { this.value = ''; this.style.color = '' } };
        }
        else{
            qtext.value = "";
            qtext.style.color = "";
            qtext.onblur = function() { clearSuggest(); };
            qtext.onclick = function() { };
        }
    }
    else {
        if (searchType == "qikan") {
            qtext.onblur = function() { if (this.value == '') { this.value = '只输入刊名即可'; this.style.color = '#999'; }; clearSuggest(); };
            qtext.onclick = function() { if (this.value == '只输入刊名即可') { this.value = ''; this.style.color = '' } };
        }
        else{
            qtext.onblur = function() { clearSuggest(); };
            qtext.onclick = function() { };
        }
    }
    try { window.clearTimeout(timer); } catch (e) { }
    return false;
}
function BtnSearchData(pos) {
    var selKeys = document.getElementById("headq").value;
    var selValue = document.getElementById(pos + "SearchType").value;
    if (selKeys == "" || (selValue == "qikan" && selKeys == "只输入刊名即可")) {
        alert("请输入关键词!");
        return;
    }
    var results = document.getElementById("results");
    if (!results.hasChildNodes()) {
        selKeys = encodeURIComponent(selKeys);
       
        if (selValue == "qikan") {
            var urlValue = "/MagaSearchQikan.aspx?FieldValue=C_NAME&Keys=" + selKeys;
            window.open(urlValue);
        }
        else {
            var urlValue = "/MagaSearchArticle.aspx?FieldValue=articleName&Keys=" + selKeys;
            window.open(urlValue);
        }
    }
}
/*suggest*/
var maxResults = 10; 
var ignoreKeys = "";

var xmlHttp = null;
var xmlDom = null;

function textChanged(evt) {
    var e = window.event ? window.event : evt;
    var o = window.event ? window.event.srcElement : evt.target;
    var v = o.value;
    var keyCode = e.keyCode;
    v = v.replace("'", "''");
    jQuery.ajax({
        type: "POST",
        url: "/bll/SearchHandler.ashx?r=" + Math.random(),
        dataType: "html",
        data: { "name": v },
        error: function() { alert(Error) },
        success: function(strdata) {
            xmlDom = createXmlDom(strdata);

            suggest(v, keyCode, o);
        }
    });


}
function suggest(keywords, keyCode, object) {

    var results = document.getElementById("results");

    if (keywords != "") {

        var terms = get_data(); 

        var ul = document.createElement("ul");
        var li;
        var a;

        if ((keyCode == '40' || keyCode == '38' || keyCode == '13')) {
            navigate(keyCode, object);

        }
        else {

            var kIndex = -1;

            for (var i = 0; i < terms.length; i++) {

                li = document.createElement("li");
                a = document.createElement("a");
                a.href = "javascript://";

                a.setAttribute("ref", terms[i].val);

                a.onmouseover = function() {

                    var el = this.parentNode.parentNode.getElementsByTagName("a");
                    for (var index = 0, len = el.length; index < len; index++) {
                        el[index].className = "";
                    }
                    this.className = "hover";
                }
                a.onmouseout = function() {
                    this.className = "";
                }

                a.onclick = function() {
                    populate(this, object);
                }


                a.appendChild(document.createTextNode(""));

                if (keywords.length == 1) {
                    var kws = terms[i].val.toLowerCase().split(" ");

                    var firstWord = 0;

                    for (var j = 0; j < kws.length; j++) {

                        ul.appendChild(li);

                        if (j != 0) {
                            kIndex = terms[i].val.toLowerCase().indexOf(" " + keywords.toLowerCase());
                            kIndex++;
                        }

                        break;
                    }
                }
                else if (keywords.length > 1) {
                    ul.appendChild(li);
                }
                else continue;

                a.innerHTML = terms[i].val;
                li.appendChild(a);

            }

            if (results.hasChildNodes()) results.removeChild(results.firstChild);

            var s = document.getElementById(object.id);
            var xy = findPos(s);

            results.style.left = xy[0] + "px";
            results.style.top = xy[1] + s.offsetHeight + "px";
            results.style.width = s.offsetWidth + "px";

            if (ul.hasChildNodes()) {
                results.appendChild(filterResults(ul));

                if (results.firstChild.childNodes.length == 1) {
                    results.firstChild.firstChild.getElementsByTagName("a")[0].className = "hover";
                    document.getElementById("keyIndex").value = "0";
                }
                else {
                    document.getElementById("keyIndex").value = "-1";
                }

            }

        }
    }
    else {
        if (results.hasChildNodes()) results.removeChild(results.firstChild);
    }
}


function createXmlDom(xmlstr) {
    if (window.DOMParser)
    {
        var p = new DOMParser();
        var doc = p.parseFromString(xmlstr, "text/xml");
        return doc;
    }
    else if (window.ActiveXObject)
    {
        var doc = new ActiveXObject("Msxml2.DOMDocument");
        doc.loadXML(xmlstr);
        return doc;
    }
    else {
        return false;
    }
}

function get_data() {
    var terms = new Array();
    var nodes = xmlDom.getElementsByTagName("row");

    var value = null;
    if (nodes != null) {
        for (var i = 0; i < nodes.length; i++) {
            node = nodes[i];
            value = node.firstChild.nodeValue;
            terms.push({ val: value });
        }
    }
    return terms;
}
function filterResults(s) {
    var sorted = new Array();

    for (var i = 0; i < s.childNodes.length; i++) {
        sorted.push(s.childNodes[i]);
    }

    var ul = document.createElement("ul");
    var lis = sorted.sort(sortIndex);

    for (var j = 0; j < lis.length; j++) {
        if (j < maxResults) ul.appendChild(lis[j]);
        else break;
    }

    return ul;

}

function sortIndex(a, b) {
    return (a.getElementsByTagName("a")[0].rev - b.getElementsByTagName("a")[0].rev);
}
function navigate(key, object) {
    var results = document.getElementById("results");
    var keyIndex = document.getElementById("keyIndex");

    var i = keyIndex.value;

    if (i == "" || !i) i = -1;
    else i = parseFloat(i);

    var ul = results.childNodes[0];

    if (ul) {

        var el = ul.getElementsByTagName("a");
        for (var index = 0, len = el.length; index < len; index++) {
            el[index].className = "";
        }

        if (key == '40')
        {
            i++;
            if (i > ul.childNodes.length - 1) i = ul.childNodes.length - 1;

            keyIndex.value = i;

            try {
                ul.childNodes[i].getElementsByTagName("a")[0].className = "hover";
                ul.childNodes[i - 1].getElementsByTagName("a")[0].className = "";
            }
            catch (e) { }
        }
        else if (key == '38')
        {
            i--;
            if (i <= 0) i = 0;

            keyIndex.value = i;

            try {
                ul.childNodes[i].getElementsByTagName("a")[0].className = "hover";
                ul.childNodes[i + 1].getElementsByTagName("a")[0].className = "";
            }
            catch (e) { }
        }
        else if (key == '13' || key == '9') 
        {
            if (i == -1) {
                hideSuggest();
            }
            else {
                populate(ul.childNodes[i].getElementsByTagName("a")[0], object);
            }
        }
        else return;
    }
}
function tabfix(keywords, keyCode, object) {
    if (keyCode == '9') {
        navigate(keyCode, object);
        return false;
    }
    else return true;
}
function populate(a, object) {
    try {
        document.getElementById(object.id).value = a.getAttribute("ref");
    }
    catch (e) { }
    clearSuggest();
}
function findPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        curleft = obj.offsetLeft
        curtop = obj.offsetTop
        var tagname = obj.offsetParent.offsetParent.tagName.toUpperCase()
        if ((tagname != "HTML") && (tagname != "BODY")) {

            while (obj = obj.offsetParent) {
                curleft += obj.offsetLeft;  
                curtop += obj.offsetTop
         
            }
        }

    }

    return [curleft, curtop];
}

function getOffsetLeft(o) {
    var left = 0;
    var offsetParent = o;
    while (offsetParent != null && offsetParent != document.body) {
        left += offsetParent.offsetLeft;
        offsetParent = offsetParent.offsetParent;
    }
    return left;
}

function clearSuggest() {
    setTimeout("hideSuggest()", 200); 

}

function hideSuggest() {
    var results = document.getElementById("results");
    if (results.hasChildNodes()) results.removeChild(results.firstChild);

    document.getElementById("keyIndex").value = "-1"; // reset the suggestions index
}
