﻿$.ns('AEC');

AEC.MiniBasket = function() {
    var el = $('#minibasket');
    var basketId = "#miniBasketListing";
    var getBasket = function() { return $(basketId); }

    var refresh = this.refresh = function(full) {
        $.ajax({
            url: '/Basket/GetMiniBasket',
            type: "GET",
            success: function(data) {
                el.html(data);
                bind();
            }
        });
    };

    var add = this.add = function(itemContext, callback, scope) {
        $.ajax({
            url: '/Basket/Add/' + itemContext.itemId,
            type: "POST",
            data: itemContext,
            success: function(data) {
                el.html(data);
                bind();
            },
            complete: function(xhr, textStatus) {
                if (callback) {
                    callback.call(scope || this, textStatus === "success");
                }
            }
        });

        // If there is a related products list on the page, reload it
        if ($('#relatedProducts').length > 0) {
            $('#relatedProducts').load('/Product/GetRelatedProducts?count=4&productId=' + itemContext.itemId);
        }
    };

    var remove = this.remove = function(id) {
        $.post("/Basket/Remove", { id: id },
				function(data, textStatus) {
				    var success = textStatus === "success";
				    if (!success) { refresh(); return; }
				    var basket = getBasket();

				    $.ajax(
					{
					    url: '/Basket/GetMiniBasketDetails/',
					    type: "GET",
					    dataType: 'json',
					    success: function(data) {
					        $('#lastAddedProduct').html(data.lastAddedItem);
					    }
					});

				    if (!basket.is("tr")) collapseListing();
				}
		);
    }





    $(document).click(
		function(e) {
		    var basket = getBasket();
		    if (basket.is(":visible") && $(e.originalTarget).parents(basketId).length == 0) basket.hide();
		}
	);

    function collapseListing() {
        var basket = getBasket();
        basket.hide(0, function() { basket.removeClass("expanded"); });
    }

    function expandListing() {
        var basket = getBasket();
        basket.toggle(); //(0, function() {basket.addClass("expanded"); });
    }



    var bind = function() {
        el.find(".show-basket").click(
			function() {
			    var basket = $("#miniBasketListing");
			    if (basket.hasClass("expanded")) {
			        collapseListing();
			    }
			    else {
			        expandListing();
			    }
			    return false;
			}
		);

        el.find(".delete-item").click(
			function() {
			    var idElement = $(this).parents(["id^=pid-"]);
			    if (!idElement.length) return false;

			    var id = idElement.attr("id").substr(4);
			    idElement.remove();
			    remove(id);
			    return false;
			});

        $('#closeMiniBasket').click(collapseListing);
    };

    bind();
};


