jQuery(function() {
	
	function addToBasket(e) {
		var productForm = e.parents('form');
		var productData = productForm.serialize();
		
		jQuery.post(productForm.attr('action'), productData, function(response) {
			
			var response = eval('(' + response + ')');
			
			if (response.status == 'ok') {
							
                jQuery('#mybasket').jBasket({
                    'product': response
                });
                
                var basket = jQuery("#mybasket .items a");
                
                basket.html(response.basketQuantity + ' ' + response.basketPrice);
				
			} else {
				
				if(response.message) {
					alert(response.message);
				} else {
					alert('an unknown error was encountered');
				}
				
			}
			
		});
	}
    
    function removeFromBasket(e) {        
        var productCode = e.attr('id');
        productCode = productCode.replace('remove_', '');
        
        var productData  = {'product_code': productCode }

        jQuery.post('/basket/remove/', productData, function(response) {
            
            var response = eval('(' + response + ')');
            
            if (response.status == 'ok') {
               
               var basket = jQuery("#mybasket .items a");
               var lightBox = e.parent('div');
                
                lightBox.slideUp(500, function() {
                    lightBox.remove();
                    basket.html(response.basketQuantity + ' ' + response.basketPrice);
                });   
                
                
            } else {
                
                if(response.message) {
                    alert(response.message);
				} else {
					alert('an unknown error was encountered');
				}
                
            }
        
        });

    }
	
	jQuery("#add-to-basket").click(function() {
		addToBasket(jQuery(this));		
		return false;
	});
	
	jQuery(".add-basket-middle input.btn").click(function() {
		addToBasket(jQuery(this));		
		return false;
	});
    jQuery('.fav-add-to-basket').submit(function(e) {
        e.preventDefault();
       addToBasket(jQuery(this).children('input.btn')) ;
       return false;
    });
    jQuery("#top").delegate('.remove', 'click', function() {
		removeFromBasket(jQuery(this));		
		return false;
    });
    
});

(function($){
    $.fn.jBasket = function(opt) {
        
        var _this = $(this);
        
        var defaults = {
           'title': 'This item has been added to your basket',
           'cssclass': 'jbasket',
           'checkoutLink': '/basket/',
           'checkoutImage': '/assets/images/buttons/proceedtocheckout.jpg',
           'product': {}
        };
        
        var options = $.extend(defaults, opt);
        
        $('.' + options.cssclass).remove();
        
        var basket = $('<div class="' + options.cssclass + '"></div>');        
        
        basket.append('<h2>' + options.title + '</h2>');
        basket.append('<hr />');
        
        if (options.product.image) {
            basket.append(options.product.image);
        }

        basket.append('<h3>' + options.product.name + '</h3>');
        basket.append('<p><strong>Quick Shop:</strong> ' + options.product.quickShop + '<br /><strong>Qty:</strong> ' + options.product.quantity + '<br /><strong>Price:</strong> &pound;' + options.product.price + '<br /></p>');
        basket.append('<a class="remove" id="remove_' + options.product.quickShop + '"><img src="/assets/images/remove-basket.jpg"></a>');
            
        basket.append('<br /><hr /><p class="right"><strong>Total:</strong> &pound;' + options.product.total + '</p><hr class="grey" />');
        
        basket.append('<a href="' + options.checkoutLink + '"><img src="' + options.checkoutImage + '"></a>');
        
        _this.append(basket);
                
        $('html,body').animate({scrollTop: 0},500, function() {
            basket.slideDown();
        });
        
        var removeBasket = function() {
            basket.slideUp(500, function() {
                basket.remove();
            });  
        }
        
        var timeOut = setTimeout(removeBasket, 5000);
        
        basket.hover(function() {
            clearTimeout(timeOut);
        }, removeBasket);
    };
})(jQuery);

