window.onload = function () {
    document.kereses.q.focus();
    document.getElementById("waiting").style.display = 'none';
}

var suggest = document.getElementById("suggest");
var head = document.getElementsByTagName("head")[0];

var cache = new Array();
var timer;
var request;
var rows;
var select;
var size;

var google = { ac: { h: showHints } }

function initiateHints(value) {
    if (value == request) {
        return;
    }
    if (value == "") {
        suggest.style.display = "none";
        return;
    }
    clearTimeout(timer);
    timer = setTimeout("requestHints()", 1000 + 1000 * Math.random());
    request = value;
}

function requestHints() {
    if (request in cache) {
        showHints(cache[request]);
        return;
    }

    var script = document.createElement("script");
    script.id = "proxy";
    script.type = "text/javascript";
    script.src = "http://suggestqueries.google.com/complete/search?hl=hu&q=" + encodeURIComponent(request);

    head.removeChild(document.getElementById("proxy"));
    head.appendChild(script);
}

function showHints(value) {
    cache[request] = value;

    if (value[1].length == 0) {
        suggest.style.display = "none";
        return;
    }
    var content = "<table>";
    for (index = 0; index != value[1].length; index++) {
        content += "<tr onclick='submitRow(" + index + ")' onmouseover='selectRow(" + index + ")' onmouseout='deselectRow()'>" +
                   "<td>" + value[1][index][0] + "</td>" +
                   "<td class='hitcount'>" + value[1][index][1] + "</td></tr>";
    }
    content += "</table>";

    suggest.innerHTML = content;
    suggest.style.display = "block";

    rows = suggest.getElementsByTagName("tr")
    size = value[1].length;
    select = -1;
}

function clearSuggest() {
    clearTimeout(timer);
    suggest.style.display = "none";
}

function goSuggest(event) {
    var code = event.keyCode;
    if (code != 38 && code != 40 && code != 13 && code != 27) {
        return;
    }

    switch (code) {
        case 38:
            if (select == -1) {
                break;
            }
            rows[select].className = "";
            select = (select + size - 1) % size;
            rows[select].className = "selected";
            break;

        case 40:
            if (select != -1) {
                rows[select].className = "";
            }
            select = (select + 1) % size;
            rows[select].className = "selected";
            break;

        case 13:
            if (select == -1) {
                break;
            }
            document.kereses.q.value = rows[select].getElementsByTagName("td")[0].innerHTML;
            clearSuggest();
            break;

        case 27:
            clearSuggest();
            break;
    }
}

function selectRow(index) {
    if (select != -1) {
        rows[select].className = "";
    }
    select = index;
    rows[select].className = "selected";
}

function deselectRow() {
    rows[select].className = "";
    select = -1;
}

function submitRow() {
    document.kereses.q.value = rows[select].getElementsByTagName("td")[0].innerHTML;
    document.kereses.submit()
}

function bodyClicked(event) {
    if (suggest.style.display == "none") {
        return;
    }
    clearSuggest();
}

