$(function () {
	function q_makeAjaxRequest(url, method, data, callback) {
		$.ajax({
			type: method,
			url: url,
			data: data,
			success: function (data) {
				console.log("Получен ответ от сервера: ", data);
				if (typeof(callback) === 'function') {
					callback(data);
					return false;
				}
				if (typeof(data) === "object" && !data.error && data.link) {
					q_makeRequest(data.link, data.params, data.method);
				} else if (typeof(data) === "object" && data.error && data.message) { /* Если есть ошибка */
					q_error(data);
				} else if (typeof(data) === "object" && data.error === false && data.message) { /* Если нет ошибка */
					q_success(data);
				} else {
					window.alert(data);
				}
			}
		});

	}
	window.q_makeAjaxRequest = q_makeAjaxRequest;
});


/* В случае ответа с ошибкой */
function q_error(data) {
    console.log("результат 1, q_error");
}

/* В случае успешного ответа */
function q_success(data) {
    console.log("результат 2, q_success");
    if (data.data.action != 'textarea_update') {
        translation_action(data);
	} else {
		textarea_update_action(data);
	}
}

function q_callback(data) {
    console.log("результат 3, q_callback");
}

function textarea_update_action(data) {
	$('.alert').hide();
    if (data.error) {
        $('#alert_danger').text(data.message);
        $('#alert_danger').show();
    } else {
        $('#origin').text(data.data.origin);
        $('#translation').text(data.data.translation);
        $('#translation').val(data.data.translation);
        $('#current').text(data.data.translation);
    }
}

function translation_action(data) {
    $('input[name="csrf"]').val(data.data.csrf);
    $('.alert').hide();
	if (data.error) {
		$('#alert_danger').text(data.message);
        $('#alert_danger').show();
	} else {
		$('#alert_success').text(data.message);
        $('#alert_success').show();
		table_update(data.data.key, data.data.value);
    }
}

function add_string(key, value) {
    var string_id = 1,
        last_array_item_id = $('#table_translate tbody .array_item:last').find('.array_item_id').text();
    if (last_array_item_id) {
        string_id = +last_array_item_id + 1;
    }
    if (string_id === 1) {
        location.reload();
    }

    $('#table_translate tbody').append('<tr class="array_item"><td class="array_item_id">'+string_id+'</td><td class="array_item_key">'+key+'</td><td class="array_item_value">'+value+'</td><td class="array_item_anchor_fix"><div id="string_'+string_id+'"></div></td></tr>')
    window.location.hash = 'string_' + string_id;
}

function table_update(key, value) {
	if ($('#table_translate').length != 0) {
        var item_key = $('#table_translate').find('.array_item_key:contains('+key+')'),
            string_exist = false;
        $(item_key).each(function () {
            /* Если ключи совпадают - меняем значение */
            if ($(this).text() === key) {
                $(this).siblings('.array_item_value').text(value);
                string_exist = true;
                window.location.hash = $(this).siblings('.array_item_anchor_fix').find('div').attr('id');
            }
        });

        /* Если совпадений ключей не найдено - добавляем строку */
        if (!string_exist) {
            add_string(key, value);
        }
	}
}