/*
 * Управление корзиной заказов
 */


/**
 * Добавление диска
 * @param id
 */
function addDisc(id) {
	ajaxRequest("adddisc", id, true);	
}

/**
 * Добавление ключа
 * @param id
 */
function addKey(id) {
	ajaxRequest("addkey", id, true);	
}

/**
 * Добавление товара в заказе
 * @param id
 */
function orderAdd(id) {
	ajaxRequestOrder("orderadd", id);	
}

/**
 * Удаление товара в заказе
 * @param id
 */
function orderRemove(id) {
	ajaxRequestOrder("orderremove", id);	
}

/**
 * Запрос к серверу на добавление/удаление диска/ключа
 * @param data
 * @param show_message
 */
function ajaxRequest(action, id, show_message) {
	$.ajax({
		type: "GET",
		url: "/ajax/" + action + "/" + id,
		dataType: "json",
		success: function(result){
			if (result.status == 'OK') {
				$('#cart_quantity').html(result.quantity);
				$('#cart_total').html(result.total);
			}
			
			if (show_message) {
				alert(result.message);
			}
		}
	});
}

/**
 * Запрос к серверу на добавление/удаление диска/ключа на странице заказа
 * @param data
 * @param show_message
 */
function ajaxRequestOrder(action, id) {
	$.ajax({
		type: "GET",
		url: "/ajax/" + action + "/" + id,
		dataType: "json",
		success: function(result){
			if (result.status == 'OK') {
				
				//Если корзина стала пустой - обновляем страницу
				if (result.quantity == 0) {
					location.href = '/order/';
				}
				
				//Обновление в плашке корзины
				$('#cart_quantity').html(result.quantity);
				$('#cart_total').html(result.total);
				
				//Удаление строки, если количество товаров в ней стало 0
				if (result.remove_item == 1) {
					$('#item_row_' + result.id).remove();
				} else {
					//Обновление в строке товара
					$('#item_' + result.id + '_quantity').html(result.item_quantity);
					$('#item_' + result.id + '_total').html(result.item_total);
				}
				
				//Обновление итого в соответствующих таблицах
				if (result.item_type == 'disc') {
					//Если есть каталоги - обновляем, если нет - удаляем таблицу каталогов
					if (result.count_catalogs > 0) {
						$('#catalogs_total').html(result.total_catalogs + ' USD');
						
						if ($('#catalogs_total_rub').length) {
							$('#catalogs_total_rub').html(result.total_catalogs_rub + ' руб.');
						}
						
						if ($('#catalogs_total_eur').length) {
							$('#catalogs_total_eur').html(result.total_catalogs_eur + ' EUR');
						}
						
						$('#cd_count').html(result.cd_count > 0? result.cd_count + ' CD' : '');
						$('#dvd_count').html(result.dvd_count > 0? result.dvd_count + ' DVD' : '');
						$('#dvddl_count').html(result.dvddl_count > 0? result.dvddl_count + ' DVDDL' : '');
					}
					else {
						$('#catalogs_table').remove();
					}
				}
				else {
					//Если есть ключи - обновляем, если нет - удаляем таблицу ключей
					if (result.count_keys > 0) {
						$('#keys_total').html(result.total_keys + ' USD');
						
						if ($('#keys_total_rub').length) {
							$('#keys_total_rub').html(result.total_keys_rub + ' руб.');
						}
						
						if ($('#keys_total_eur').length) {
							$('#keys_total_eur').html(result.total_keys_eur + ' EUR');
						}
					}
					else {
						$('#keys_table').remove();
					}
				}
				
				//Обновление доставки
				var id = $('input[name="OrderForm[delivery_type]"]:checked').val();
				if (id) {
					delivery(id);
				}
				else {
					$('#order_total_usd').html(result.total + ' USD');
					
					if ($('#order_total_rub').length) {
						$('#order_total_rub').html(result.total_rub + ' руб.');
					}
					
					if ($('#order_total_eur').length) {
						$('#order_total_eur').html(result.total_eur + ' EUR');
					}
				}
			}
			else if (result.status == 'ERROR'){
				alert(result.message);
			}
		}
	});
}

/**
 * Запрос к серверу на изменение способа доставки
 * @param data
 * @param show_message
 */
function delivery(id) {
	$.ajax({
		type: "GET",
		url: "/ajax/delivery/" + id,
		dataType: "json",
		success: function(result){
			if (result.status == 'OK') {
				$('#delivery_price_usd').html(result.delivery_price_usd + ' USD');
				
				if ($('#delivery_price_rub').length) {
					$('#delivery_price_rub').html(result.delivery_price_rub + ' руб.');
				}
				
				if ($('#delivery_price_eur').length) {
					$('#delivery_price_eur').html(result.delivery_price_eur + ' EUR');
				}
				
				$('#order_total_usd').html(result.total_sum_with_delivery_usd + ' USD');
				
				if ($('#order_total_rub').length) {
					$('#order_total_rub').html(result.total_sum_with_delivery_rub + ' руб.');
				}
				
				if ($('#order_total_eur').length) {
					$('#order_total_eur').html(result.total_sum_with_delivery_eur + ' EUR');
				}
				
				var payment_selector = $('#OrderForm_payment_type');
				payment_selector.empty();
				
				for (var i = 0; i < result.payment_types.length; i++) {
					payment_selector.append('<option value="' + result.payment_types[i].id + '">' + result.payment_types[i].name + '</option>');
				}
				
			}
			else if (result.status == 'ERROR'){
				alert(result.message);
				payment_selector.empty();
			}
		}
	});
}		

/**
 * Отображение / скрытие дополнительного поля при выборе варианта оплаты "Иное"
 * @param payment_type_id
 */
function toggle_payment_other_field(payment_type_id) {
	//Выбрано "Иное" - показываем дополнительное поле
	if ($('#OrderForm_payment_type').val() == 6) {
    	$('#other_payment_type_tr').show();
	}
	else {
		$('#other_payment_type_tr').hide();
	}
}
