﻿jQuery.fn.dartComplete = function (data, selectionChanged) {

    $("#pesquisaResultados").remove();

    var list = document.createElement("ul");

    var $list = $(list);
    $list.attr("id", "pesquisaResultados");
    $list.addClass("ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all ulAutocomplete");

    var listId = 0;

    for (d in data) {
        listId++;
        var listItem = document.createElement("li");
        var $listItem = $(listItem);
        $listItem.attr("id", "selectListItem" + listId);
        $listItem.addClass("ui-menu-item liAutocomplete");

        $listItem.text(data[d]);
        $list.append($listItem);

        submitSearch(selectionChanged, $listItem);
    }

    var actualLine = 0;

    $(this).keydown(function (e) {
        var key = e.keyCode;

        if (key == 13 || key == 40 || key == 38) {

            var listCount = $list[0].childElementCount;

            if (listCount == null || listCount == "undefined") {
                listCount = listId;
            }

            if (key == 13/*ENTER*/) {
                $("#selectListItem" + actualLine).click();
            }
            if (key == 40/*DOWN*/) {
                if (actualLine < listCount) {
                    removeAllClassForUl();
                    actualLine++;
                    $("#selectListItem" + actualLine).addClass("liAutocompleteHover");
                }
            }
            if (key == 38/*UP*/) {
                if (actualLine > 1) {
                    removeAllClassForUl();
                    actualLine--;
                    $("#selectListItem" + actualLine).addClass("liAutocompleteHover");
                }
            }
        }
    });

    $("#IdListaPecas").append(list);
}

function removeAllClassForUl(ulElementId) {
    $("#pesquisaResultados").find('li').each(function () {
        $(this).removeClass("liAutocompleteHover");
    });
}

function submitSearch(selectionChanged, listItem) {
    if (selectionChanged != null && selectionChanged != 'undefined') {
        listItem.click(function () {
            selectionChanged($(this).text());
        });
    }
}
