﻿

//隐藏或显示table
function set_visible(on, tab_id) {
    tab_id = tab_id == null ? 'tab_down' : tab_id;
    var tab = document.getElementById(tab_id);
    if (on) {
        tab.style.visibility = 'visible';
    } else {
        tab.style.visibility = 'hidden';
    }
}

function for_keydown(e, ev, tab_id) {
    tab_id = tab_id == null ? 'tab_down' : tab_id;
    var tab = document.getElementById(tab_id);
    var touch = ev.keyCode;
    if (touch == 38 || touch == 40) { //38上40下
        var i = -1;
        var s_tr = get_tr_on(tab);
        if (s_tr != null) { i = s_tr.rowIndex; }
        if (touch == 40) { if (i == tab.rows.length - 2) { i = 0; } else { i++ } }
        else { if (i <= 0) { i = tab.rows.length - 2; } else { i--; } }
        set_tr_on(i, tab);
        var str = tab.rows[i].cells[0].innerHTML;
        document.getElementById('hid_q').value = str;
        tab.value = str;
    } else if (touch == 13) { var m = document.getElementById('m').value; go(e.value, m); }
}

function for_keyup(e,tab_id,ev,n) {
    var hid_q = document.getElementById('hid_q');
    if (hid_q.value != e.value) {

        if (n != null && n == 1) {
            if (ev.keyCode == 38 || ev.keyCode == 40) { e.value = hid_q.value; return; } else { hid_q.value = e.value; }
        }

        var tab_id = tab_id == null ? 'tab_down' : tab_id;
        var tab = document.getElementById(tab_id);

        var m = document.getElementById('m').value;
        

        hid_q.value = e.value;

        new Ajax().Request(
            {
                url: '/search/autocomplete.aspx',
                method: 'get',
                data: { k: e.value, m: m },
                success: function(t) {
                    var result = eval(t.responseText);
                    while (tab.rows.length > 0) { tab.deleteRow(0); }
                    
                    if (result != null && result[1].length > 0) {
                        set_visible(true, tab_id);

                        var g;
                        for (var i = 0; i < result[1].length; i++) {
                            if (g = result[1][i]) {
                                var tr_new = tab.insertRow(g[2]);
                                tr_new.onmouseover = function() { set_tr_on_only(this); }
                                tr_new.onmouseout = function() { tr_setoff(this); }
                                tr_new.onmousedown = function() { go(this.cells[0].innerHTML, m); }

                                var td_1 = tr_new.insertCell(0);
                                td_1.className = 'gac_c';
                                td_1.innerHTML = g[0];

                                var td_2 = tr_new.insertCell(1);
                                td_2.className = 'gac_d';
                                ////td_2.innerHTML = g[1] + '-' + g[2];
                                td_2.innerHTML = '';
                            }
                        }
                        var tr_close = tab.insertRow(result[1].length);
                        tr_close.className = 'gac_e';
                        var td = tr_close.insertCell(0);
                        td.colSpan = '2';
                        td.innerHTML = '<span onclick=\"set_visible(false,' + tab_id + ')\">关闭</a>';
                    } else {
                        set_visible(false, tab_id);
                    }
                }
            }
        );
    }
}

//根据传入指定tr，高亮显示之
function set_tr_on_only(tr) {
    set_tr_on(tr.rowIndex, tr.parentNode.parentNode)
}

//根据传入rowIndex，高亮显示该tr，并还原其他tr的高亮状态
function set_tr_on(index, tab) {
    for (var i = 0; i < tab.rows.length; i++) {
        if (index == i) { tr_seton(tab.rows[i]) }
        else { tr_setoff(tab.rows[i]) }
    }
}

//获取table里高亮显示的tr对象
function get_tr_on(tab) {
    var tr;
    for (var i = 0; i < tab.rows.length; i++) {
        if (tr_ison(tab.rows[i])) { tr = tab.rows[i]; }
    }
    return tr;
}

function tr_ison(tr)//用该方法判断tr行是否被高亮选中
{ return tr.style.backgroundColor != "" }
function tr_seton(tr)//设置tr行的高亮选中
{ tr.style.backgroundColor = "#3366CC"; }
function tr_setoff(tr)//设置tr行取消高亮选中
{ tr.style.backgroundColor = "" }

function go(v, md)//新窗口访问Google地址
{
    self.location.href = '/search/?k=' + escape(v) + '&amp;m=' + md;
}