'use strict'

// Инициализация геолокации (запись геолокации по айпи, если не существует)
function yandex_geolocation_init() {
    $.ajax({
        url: '/profile/geolocation/init',
        type: 'post',
        dataType: 'json',
        data: { '_csrf': yii.getCsrfToken() },
        success: yandex_geolocation_success,
        error: yandex_geolocation_error
    });
};

yandex_geolocation_init();

function yandex_geolocation_search() {
    try {
        ymaps.geolocation.get({
            autoReverseGeocode: true
        }).then(function (result) {
            // Запрос
            $.ajax({
                url: '/profile/geolocation/write',
                type: 'post',
                dataType: 'json',
                data: {
                    'yandex': {
                        // 'metadata': result.geoObjects.get(0).properties.get('metaDataProperty'),
                        'coordinates': result.geoObjects.get(0).properties.get('boundedBy')
                    },
                    '_csrf': yii.getCsrfToken()
                },
                success: yandex_geolocation_success,
                error: yandex_geolocation_error
            });
        })
    } catch (err) {
        setTimeout(yandex_geolocation_search, 3000);
    }
}


function yandex_geolocation_responce(data, status, xhr) {
    // Обработка ответов

    main_response(data, status, xhr);
};

function yandex_geolocation_success(data, status, xhr) {
    // Обработка ответов от удавшихся запросов

    if (data !== undefined) {
        // Получены данные с сервера

        // Запрос геолокации
        if (data.geolocation !== undefined && data.geolocation === false) {

            yandex_geolocation_search();
        }
    };

    yandex_geolocation_responce(data, status, xhr);
};

function yandex_geolocation_error(data, status, xhr) {
    // Обработка ответов от неудавшихся запросов

    // Инициализация
    data = data.responseJSON;

    yandex_geolocation_responce(data, status, xhr);
};
