function update_counts(query) {
    // Beta reduction in action! rbI... rbI...
    return function(data) {
        if (query == $('#main_search').val()) {
            replace_count("#main_company_count", data.companies);
            replace_count("#main_price_count", data.prices);
            replace_count("#main_tender_count", data.tenders);
            replace_count("#main_user_count", data.users);
        }
    };
}

function replace_count(el, value) {
    if (value == null || value == 0) {
        $(el).html("0");
    } else {
        $(el).html(value);
    }
}

function go(action, current) {
    if (action != 'selecttender' && action != 'prices' && action != 'goods' && action != 'selectcompany' && action != 'selectgroup' && action != 'selectuser') {
        document.forms['cse-search-box'].submit();
    } else {
        if (action == current && document.getElementById('extended_search') != null) {
            extendedSearch();
        } else {
            var s = path + action;
            if ($('#main_search').val().length > 0) {
                s += '?listModel.search=' + encodeURIComponent(document.getElementById('main_search').value);
            }
            location.href = s;
        }
    }
    return false;
}

function extendedSearch() {
    $('#update_search_value').val($('#main_search').val());
    document.getElementById('extended_search').submit();
    return false;
}

function targetSearch(e, action) {
    if (e) {
        e = e;
    } else {
        e = e.event;
    }

    var keycode;
    if (e.which) {
        keycode = e.which;
    } else {
        keycode = e.keyCode;
    }

    if (keycode == 13) {
        return go(action, action);
    } else {
        return true;
    }
}