$(document).ready(function() {
	
	var cancel_func = function() {
		$(this).fadeOut(function() { $(this).parent().find('a:first').fadeIn(); $(this).remove(); });
		$('.address-div').slideUp();
		$('input[name=add_address]').val('0');
		return false;
	};
	
	$('.cancel-add-address').click(cancel_func);
	
	var click_func = function() {
		$('.form-address input[name^=address_]').not('[name=address_name]').val('');
		$(this).fadeOut(function() {
			var cancel = $('<a href="#" class="cancel-add-address">Cancel</a>');
			cancel.click(cancel_func);
			$(this).after(cancel);
		});
		$('.address-div').slideDown();
		$('input[name=add_address]').val('1');
		return false;
	};
	
	$('.add-address').click(click_func)
	
	var submit_func = function() {
		
		var fields = {};
		$('.form-address input[name^=address_], .form-address select[name^=address_]').each(function() {
			fields[$(this).attr('name')] = $(this).val();
		});
		
		$.post('/account/address/create', $.extend(fields, {'ajax': 1}), function(data, textStatus) {
			if (data.status == 'success') {
							
				var row = '<tr class="address-item">\
                    <td style="padding: 4px 0 4px 2px; color: #333;"><strong>' + data.address.address_name + '</strong> (' + data.address.address_compiled + ')</td>\
                    <td style="text-align: center; width: 70px;"><input type="radio" name="address_billing" value="' + data.address.address_id + '" /></td>\
                    <td style="text-align: center; width: 70px;"><input type="radio" name="address_delivery" value="' + data.address.address_id + '" /></td>\
                </tr>';

				row = $(row);
				row.find('input[name=address_delivery]').change(delivery_change);
				row.css('background-color', 'lightyellow');
				
				if (!$('.second-column').length) {
					
					$.get('/cart/shipping_block', function(data) {
						var block = $(data);
						block.css('display', 'none');
			            block.find('.round-10').corner("10px");
			            block.find('.round-14').corner("14px");
						$('.block-container').append(block);
						block.fadeIn();
					}, 'text')
					
					var column_billing = '<th class="second-column" style="border-bottom: 1px solid #cbcbcb; text-transform: uppercase; font-size: 1.05em; padding: 6px 0 4px 0; text-align: center;">Billing</th>';
					var column_shipping = '<th style="border-bottom: 1px solid #cbcbcb; text-transform: uppercase; font-size: 1.05em; padding: 6px 0 4px 0; text-align: center;">Shipping</th>';
					$('#address-table thead tr').append(column_billing);
					$('#address-table thead tr').append(column_shipping);
					
					$('#address-table .address-title').text("Select Address");
					
					var footer_link = $('<td colspan="2" style="border-top: 1px solid #cbcbcb; color: #999; padding-bottom: 6px; text-align: center;">\
						<a href="/account/address/create" class="add-address">Add a new address</a>\
					</td>');
					footer_link.find('a').click(click_func);
					$('#address-table tfoot tr').append(footer_link);
					
					$('#address-table .address-create').css('border-top', '1px solid #cbcbcb');
				}
				
				$('#address-table .address-create').before(row);
				
				row.slideDown();
				cancel_func.apply($('.cancel-add-address'));
				setTimeout(function() { row.animate({backgroundColor: 'white'}, 4000) }, 1000);
				
			}
			else {
				alert("Problem: " + data.error);
			}
		}, 'json');
		
		return false;
	};
	
	$('.add-address-button').click(submit_func);
	
	
	
	var delivery_change = function() {
		$('#shipping_block').find('input').attr('disabled', 'disabled');
		$('#shipping_block').animate({opacity: 0.5}, 200).append('<div style="position: relative; top: -180px; clear: left;text-align: center; width: 100%; font-size: 12pt; font-weight: bold;">Please wait...</div>');
		$.get('/cart/shipping_block/' + $(this).val(), {}, function(data) {
			$('#shipping_block').replaceWith(data);
            $('#shipping_block .round-10').corner("10px");
            $('#shipping_block .round-14').corner("14px");
		}, 'html');
	};

	$('input[name=address_delivery]').click(delivery_change);
});