jQuery(function($){
    var rootPath = window._x_webapp_root ? window._x_webapp_root : '/';
    var url = rootPath + "suggest/suggest";

    var headers = {};
    if (document.cookie) {
        var cookies = document.cookie.split(";");
        for (var i = 0; i < cookies.length; i++) {
            var str = cookies[i].split("=");
            if (str[0].trim() == window._x_webapp_xsrf_token) {
                headers['X-XSRF-TOKEN'] = unescape(str[1]);
                break;
            }
        }
    }
    $(".autocomplete").autocomplete({
        minLength : 0,
        delay : 0,
        source: function(req, resp){
            $.ajax({
                url: url,
                headers : headers,
                type: "GET",
                dataType: "json",
                data: {
                    q : req.term,
                    mode : "zSearch"
                },
                success: function(data){
                    resp($.map(data.response, function (item) {
                        return {
                            value: item.value
                        };
                    }));
                },
                error: function(xhr, ts, err){
                resp(['']);
                }
            });
        },
        select : function(e, ui) {
            $(this).val(ui.item.value);
            $(this).closest("form").submit();
        }
    }).focus(function() {
        jQuery(this).autocomplete("search", "");
    });
});