function unknownError()
{
	notifyCart('Não foi possível atualizar o carrinho. Por favor, tente novamente.', 5);
}

function cartModalStart()
{
	if (jQuery('#cart-loader')[0] != undefined)
	{
		return true;
	}
	var block = jQuery('div.main div.block-cart')[0];
	jQuery(block).prepend('<div id="cart-loader">Carregando</div>');
	jQuery(block).css({ opacity: 0.5 });
}

function cartModalStop()
{
	var block = jQuery('div.main div.block-cart')[0];
	jQuery('#cart-loader').remove();
	jQuery(block).css({ opacity: 1 });
}

function updateSidebarCart()
{
	var block = jQuery('div.main div.block-cart')[0];

	cartModalStart();
	jQuery.ajax({
		type: 'POST',
		url: URL_CHECKOUT_AJAX_LIST,
		success: function(data){
			cartModalStop();
			try
			{
				if (data.success)
				{
					if (data.data.length == 0)
					{
						var html = '<div class="block-title cart-title"><a target="_self" title="Meu carrinho" href="' + URL_CHECKOUT_CART + '"></a></div>';
						html += '<div class="block-content-cart"><p class="empty">Você não tem itens no seu carrinho de compras.</p></div>';
						html += '<div class="summary"><p class="subtotal">Valor total: <span class="price">R$0,00</span></p></div>';
						html += '<div class="bottomBloco"></div><br>';
						jQuery(block).html(html);
					}
					else
					{
						var html = '<div class="block-title"><h2><a target="_self" title="Meu Carrinho" href="' + URL_CHECKOUT_CART + '">Meu Carrinho</a></h2></div>';
						html += '<div class="block-subtitle"><ul><li>Produto</li><li>Qtd</li><li>Preço(R$)</li></ul></div>';
						html += '<div class="block-content-cart"><ol id="cart-sidebar" class="mini-products-list">';
						for (var i = 0; i < data.data.length; i++)
						{
							var item = data.data[i];
							var url = URL_CHECKOUT_CART_DELETE + 'id/' + item.id + '/' + URL_CHECKOUT_AJAX_DELETE_PARAM + '/' + URL_CHECKOUT_AJAX_DELETE_VALUE + '/';
							html += '<li class="item"><div class="product-details">';
							html += '<input type="text" class="product-name" readonly="" value="' + item.name + '">';
							html += '<input type="text" readonly="" maxlength="6" value="' + item.qty + ' ">' + item.price;
							html += '<a title="Remover este item" href="' + url + '" class="btn-remove">';
							html += '<img border="0" title="Remover este item" alt="x" src="' + IMG_CART_ITEM_DELETE + '"></a></div></li>';
						}
						var total_item = data.total_item + ' ' + (data.total_item == 1 ? 'item.' : 'itens.');
						html += '</ol></div><div class="summary">';
						html += '<p class="subtotal">Total de itens:<span>' + total_item + '</span></p>';
						html += '<p class="subtotal">Valor total:<span class="price">' + data.total_value + '</span></p></div>';
						html += '<div class="actions-cart">';
						html += '<button class="finalizar" onclick="setLocation(\'' + URL_CHECKOUT_ONEPAGE + '\')" title="Finalizar Compra">Finalizar Compra</button>';
						html += '<ul style="display: block;">';
						html += '<li class="save"><button title="Guardar" type="button" onclick="showGuardarCarrinho(this);" class="gray-button"><img border="0" title="Guardar meu carrinho de compras" alt="" src="' + IMG_CART_SAVE + '">\nGuardar</button>';
						html += '\n<li class="clear"><button title="Esvaziar" type="submit" onclick="if (confirm(\'Tem certeza que deseja esvaziar seu carrinho?\')) setLocation(\'' + URL_CART_CLEAR + '\')" class="gray-button"><img border="0" title="Esvaziar meu carrinho de compras" alt="" src="' + IMG_CART_CLEAR  + '">\nEsvaziar</button></li>';
						html += '</ul>';
						html += '<button class="carrinhosGuardados" onclick="setLocation(\'' + URL_SUGGESTIONLIST_CART + '\')" title="Carrinhos Guardados">Carrinhos Guardados</button></div>';
						html += '<script type="text/javascript">decorateList(\'cart-sidebar\', \'none-recursive\')</script>';
						jQuery(block).html(html);
					}
				}
				else
				{
					unknownError();
				}
			}
			catch (e)
			{
				unknownError();
			}
		},
		error: function(data){
			cartModalStop();
			unknownError();
		},
		dataType: 'json'
	});
}

jQuery(document).ready(function(){
	jQuery('button.btn-cart').removeAttr('onclick');
	
	jQuery('button.btn-cart').live('click', function(e){
		var id = jQuery(this).attr('id').replace(/([^0-9]*)/, '');
		var qty = jQuery('#qty_' + id).val();
		var comment = jQuery('#additional_data_' + id).val();

		deleteNotifyCart();

		jQuery('#checkout_ajax_loader').dialog({
			width: 200,
			height: 80,
			modal: true,
			resizable: false,
			title: 'Atenção'
		});

		jQuery.ajax({
			type: 'POST',
			url: URL_CHECKOUT_AJAX_ADD,
			data: {id: id, qty: qty, comment: comment},
			success: function(data){
				jQuery('#checkout_ajax_loader').dialog('close');
				try
				{
					if (data.success)
					{
						notifyCart(data.message);
						
						if (qty == 0)
						{
							updateButton(id, 2);
						}
						else
						{
							updateButton(id);
						}

						updateSidebarCart();
					}
					else
					{
						notifyCart(data.message, 5);
					}
				}
				catch (e)
				{
					unknownError();
				}
			},
			error: function(data){
				jQuery('#checkout_ajax_loader').dialog('close');
				unknownError();
			},
			dataType: 'json'
		});

		e.preventDefault();
	});

	jQuery('#cart-sidebar a.btn-remove').live('click', function(e){
		var id = jQuery(this).attr('href').match(/\/cart\/delete\/id\/([0-9]+)/)[1];

		if (!confirm('Você tem certeza que deseja remover este item do seu carrinho de compras?'))
		{
			return false;
		}

		deleteNotifyCart();

		jQuery('#checkout_ajax_loader').dialog({
			width: 200,
			height: 80,
			modal: true,
			resizable: false,
			title: 'Atenção'
		});

		jQuery.ajax({
			type: 'POST',
			url: URL_CHECKOUT_AJAX_DELETE,
			data: {id: id},
			success: function(data){
				jQuery('#checkout_ajax_loader').dialog('close');
				try
				{
					if (data.success)
					{
						notifyCart(data.message);
						updateButton(data.product_id, 2);
						updateSidebarCart();
					}
					else
					{
						notifyCart(data.message, 5);
					}
				}
				catch (e)
				{
					unknownError();
				}
			},
			error: function(data){
				jQuery('#checkout_ajax_loader').dialog('close');
				unknownError();
			},
			dataType: 'json'
		});

		e.preventDefault();
	});
});
