/**
 * Событие, вызываемое при успешном выборе улицы из списка
 * Служит для вывода следующей информации:
 * - информации о доставке
 * - информации о необходимости указать улицу для СНТ
 *
 * @param {string} street_id JSON объект, возвращаемый jquery autocomplete
 */
function selectStreetSuccess(street_id)
{
    $.ajax({
        url: "/locations/street/checkStreetSuccess",
        type: "GET",
        data: {
            'street_id' : street_id,
        },
        dataType: "json",
        beforeSend: function() {
            $(".street-autocomplete__status").html('').hide();
        },
        success: function(data) {
            // Если в ответе пришло информационное сообщение - показываем его
            if (data.message) {
                $(".street-autocomplete__status").html(data.message).show();
            }

            // Обновляем виджет с составом и суммой заказа
            //update_order_total_info($('#Order_delivery_type').val());
        }
    });
}

/**
 * Событие, вызываемое, если пользователь не выбрал улицу из списка
 * Служит для вывода следующей информации:
 * - информации о необходимости выбрать улицу из списка
 */
function selectStreetFail()
{
    message = 'Выберите улицу из списка!';
    //message += '<a class="street-autocomplete__not-found-link" href="javascript:void(0);">Не нашли своей улицы?</a>';

    $(".street-autocomplete__status").html(message).show();
}

jQuery(document).ready(function(){
    /* Инициализируем плагин автозаполнения */
    jQuery( '.street-autocomplete' ).autocomplete({
        source: function( request, response ) {
            jQuery.ajax({
                url: "/locations/street/getStreets?street=" + request.term,
                dataType: "json",
                data: {
                    search: request.term,
                    street_id: jQuery(".street-autocomplete__result").val(),
                },
                success: function( data ) {
                    response( jQuery.map( data, function( item ) {
                        return {
                            label: item.label,
                            value: item.value,
                            id: item.id
                        }
                    }));
                }
            });
        },
        appendTo: ".street-autocomplete__container",
        delay: 0,
        minLength: 2,
        select: function( event, ui ) {
            jQuery(".street-autocomplete__result").val(ui.item.id);
            jQuery(".street-autocomplete__status").html("");

            selectStreetSuccess(ui.item.id);
        },
        change: function( event, ui ) {
            if (!ui.item) {
                selectStreetFail();
            }
        }
    });

    //  Отображаем список возможных значение при получении полем фокуса
    jQuery(".street-autocomplete").focus(function(){
        jQuery(".street-autocomplete").autocomplete("search", jQuery(".street-autocomplete").val());
    });

    jQuery(".street-autocomplete").keydown(function(){
        console.log('autocomplete-keydown');

        // Очищаем выбранное значение
        $(".street-autocomplete__result").val('');
        $(".street-autocomplete__status").html('');
    });

//    jQuery("body").on("blur", ".street-autocomplete", function(){
//
//    });
});