﻿$(function () {
    var cache = {}, lastXhr;
    var root = "http://" + window.location.host;
    $("#textfield").keyup(function (event) {
        if (event.keyCode == 13) HideComplete();
        if (event.keyCode == 39) HideComplete();
    });

    $("#textfield").autocomplete({
        source: function (request, response) {
            var term = request.term;
            if (term in cache) {
                response(cache[term]);
                return;
            }
            lastXhr = $.getJSON(root + "/AutoComplete/GetKeyWord", request, function (data, status, jqXHR) {
                cache[term] = data;
                response(data);
            });
        },
        search: function (event, ui) {
            var auto = $(this).autocomplete("widget");
            auto.fadeIn("slow");
        },
        close: function (event, ui) {
            var auto = $(this).autocomplete("widget");
            auto.empty();
        }
    });

    $("#textfield").data("autocomplete").menu.options.selected = function (event, ui) {
        var item = ui.item.data("item.autocomplete");
        $("#textfield").val(item.value);
        $("#textfield").focus();
        HideComplete();
    };

    $("#textfield").data("autocomplete").menu.options.focus = function (event, ui) {
        $("#textfield").focus();
    }
    $("#textfield").data("autocomplete").menu.options.blur = function (event, ui) {
        $("#textfield").focus();
    }

    function HideComplete() {
        var auto = $("#textfield").autocomplete("widget");
        auto.fadeOut("slow", function () {
            $(this).empty();
        });
    }
});

