function setActiveResult(num)
{
        var result = document.getElementById('search_result_'+num);
        var res_num = document.getElementById('result_number_'+num);
        if (result)
                result.className = 'search_result_hover';
        if (res_num)
                res_num.className = 'result_number_hover';
}

function setInactiveResult(num)
{
        var result = document.getElementById('search_result_'+num);
        var res_num = document.getElementById('result_number_'+num);
        if (result)
                result.className = 'search_result';
        if (res_num)
                res_num.className = 'result_number';
}
var selectedSuggestion = -1;
var maxSuggestion = 9;

function add_listener()
{
        var el = document.getElementById('id_search_query');
        if (el)
        {
                el.focused = false;
                el.hasFocus = function() {
                        return this.focused;
                };
                el.setFocus = function() {
                        this.focused = true;
                };
                el.setUnfocus = function() {
                        this.focused = false;
                };
                el.onfocus = function() {
                        this.focused = true;
                };
                el.onblur = function() {
                        this.focused = false;
                };
        }
}

function get_suggestions(el, id, divid, keyCode)
{
//      window.alert("keyCode: " + typeof keyCode);
        if ( keyCode == 13 ) // enter
        {
                var searchfield = document.getElementById(divid);
//              window.alert("inner: " + divid.innerHTML);
                if (el.hasFocus() == true || !searchfield.innerHTML || searchfield.innerHTML == "") // if search field has focus
                {
//                      document.forms["searchform"].submit();
                }
                else
                {
                        el.setFocus();
                        useSuggestion(id, divid);
                        document.forms["searchform"].submit();
                        return false;
                }
        }
        else if ( keyCode == 32 ) // space
        {
                var searchfield = document.getElementById(divid);
                if (el.hasFocus() == true || !searchfield.innerHTML || searchfield.innerHTML == "") // if search field has focus
                {
                        selectedSuggestion = -1;
                        var search_str = el.value;
                        ajaxRequest("get_suggestions", new Array(search_str, id, divid));
                }
                else
                {
                        el.setFocus();
                        useSuggestion(id, divid);
                        return false;
                }
        }
        else if ( keyCode == 38 ) // up
        {
                el.setUnfocus();
                selectSuggestion(false);
                return false;
        }
        else if ( keyCode == 40 ) // down
        {
                el.setUnfocus();
                selectSuggestion(true);
                return false;
        }
        else
        {
                selectedSuggestion = -1;
                var search_str = el.value;
                ajaxRequest("get_suggestions", new Array(search_str, id, divid));
        }
        return false;
}

function useSuggestion(id, divid)
{
        if ( document.getElementById('suggestion'+selectedSuggestion) )
        {
                document.getElementById(id).value = document.getElementById('suggestion'+selectedSuggestion).innerHTML;
                document.getElementById(divid).innerHTML = '';
                document.getElementById(divid).style.display = 'none';
        }
        return false;
}

function selectSuggestion(down)
{
        if ( document.getElementById('suggestion'+selectedSuggestion) )
        {
                document.getElementById('suggestion'+selectedSuggestion).className = 'suggestion';
        }
        if ( down )
        {
                if (selectedSuggestion == maxSuggestion)
                {
                        selectedSuggestion = 0;
                }
                else
                {
                        selectedSuggestion++;
                }
        }
        else
        {
                if ( selectedSuggestion <= 0 )
                {
                        selectedSuggestion = 9;
                }
                else
                {
                        selectedSuggestion--;
                }
        }
        if ( document.getElementById('suggestion'+selectedSuggestion) )
        {
                document.getElementById('suggestion'+selectedSuggestion).className = 'suggestion suggestion_sel';
        }
}

function canSubmit()
{
        if ( selectedSuggestion < 0 || document.getElementById('suggestionsd').innerHTML == '' )
                return true;
        else
                return false;
}
onloads.push(add_listener);
