﻿(function ($) {
    $.fn.minicart = function (options) {
        var opts = $.extend({}, $.fn.minicart.defaults, options);

        return this.each(function () {
            // $this = $(this);
            $(this).empty().append(renderTop(opts)).append(renderBody(opts));
            if (opts.IsShowminicart) {
                $("#headerminicart").slideDown(200);
            }
            else {
                $("#headerminicart").slideUp(200);
            }
        });
    }
    function renderTop(options) {
        var shoppingCartUrl = options.ShoppingCartUrl;
        var itemsData = options.items.MiniCartItems;
        var itemCount = 0;
        for (var i = 0; i < itemsData.length; i++) {
            itemCount += itemsData[i].Quantity;
        }
        var $topCart = $('<div class="minicartsummeryTop"><img src="' + options.CartImageUrl + '" atl="shopping bag" id="minicartimg"></img><b>' + itemCount + '</b> item(s) <b>' + options.items.CartSubtotal + '</b></div>');

        if (options.items.CartTotalQty > 0) {
            var $checkoutButton = $('<input class="middlebutton_red1" id="CheckOutInMiniCartTopButton" style="margin-left: 10px; cursor: pointer;" type="button" value="Checkout"/>');
            $checkoutButton.click(function () {
                $("#HeaderCartForm").attr("action", shoppingCartUrl);
                $("#HeaderCartForm").submit();
            });
            $checkoutButton.appendTo($topCart);
        }

        $topCart.click(function () {
            if (!$("#headerminicart").is(":visible") && options.items.CartTotalQty > 0) {
                $("#headerminicart").slideDown(200);
            }
        });
        return $topCart;

    };
    function renderBody(options) {
        var shoppingCartUrl = options.ShoppingCartUrl;
        var checkoutUrl = options.CheckoutUrl;
        var deleteItemUrl = options.DeleteItemUrl;

        var itemsData = options.items.MiniCartItems;
        var $bodyCart = $("<div id=\"headerminicart\"></div>").attr("style", "display:none");
        var $cartHeader = $('<div id="headerminicartheader"><div class="column1"></div><div class="column2"></div><div class="column3">Qty</div><div id="headerminicartheaderclosebutton" class="column4 closeButton"></div><div class="clear"></div></div>');
        $cartHeader.find(".closeButton").append('<img src="' + options.CloseImageUrl + '" alt="Close" >Close')
                    .click(function () {
                        $("#headerminicart").slideUp(200);
                    });
        $cartHeader.appendTo($bodyCart);

        var $cartItems = $('<div id="headerminicartitems"></div>');
        for (var i = 0; i < itemsData.length; i++) {
            var itemClass = (i % 2 == 0 ? "whitebg" : "graybg");

            var $item = $('<div></div>').addClass(itemClass);
            var $col1 = $('<div class="column1"><a href="' + itemsData[i].DetailPageUrl + '"><img src="" alt="" /></a>&nbsp;</div>');
            $col1.find("a").find("img").attr("src", itemsData[i].ImageUrl).attr("alt", itemsData[i].ImageAlter);
            $col1.appendTo($item);

            var $col2 = $('<div class="column2"><a href="' + itemsData[i].DetailPageUrl + '"></a></div>');
            var col2Txt = itemsData[i].ProductName + "&nbsp;";
            if (itemsData[i].IsFreeGift) {
                col2Txt += '<span class="freeGiftMessage">*Free Gift With Purchase</span>';
            }

            $col2.find("a").html(col2Txt);
            $col2.appendTo($item);

            var $col3 = $('<div class="column3"></div>').html(itemsData[i].Quantity + '<br/>');
            var $col3_a = $('<a style="text-decoration: underline; cursor: pointer;" id = "' + itemsData[i].OrderLineItemGuid + '">Remove</a>');
            $col3_a.click(function () {
                if (window.confirm("Are you sure you want to delete this product?")) {
                    $("#HeaderCartForm").attr("action", deleteItemUrl + "/" + $(this).attr("id"));
                    $("#HeaderCartForm").submit();
                }
            }).appendTo($col3);

            $col3.appendTo($item);

            var $col4 = $('<div class="column4"></div>').html(itemsData[i].SubTotal).appendTo($item);

            var $col5 = $('<div class="clear"></div>').appendTo($item);

            $item.appendTo($cartItems);
            $cartItems.appendTo($bodyCart);
        }

        var $cartFooter = $('<div id="headerminicartfooter"><div class="column1"></div><div class="column2"></div><div class="column3">' + options.items.CartTotalQty + ' items' + '</div><div class="column4" style="font-weight:bold">' + options.items.Total + '</div><div class="clear"></div></div>');
        $cartFooter.appendTo($bodyCart);

        var $cartActions = $('<div id="headercartactions"></div>');
        $cartActions.append($('<span id="headerminicartcontinueshopping"><a href="#" class="continueShopping">Continue Shopping</a></span>').click(function () { $("#headerminicart").slideUp(200); })).append(' | ');

        $cartActions.append($('<span id="headerminicartupdateshopping"><a href="' + shoppingCartUrl + '">Edit Cart </a></span>'));
        $cartActions.append($('<input id="CheckOutInMiniCartBottomButton" type="button" class="middlebutton_red1" value="Checkout" />')
                .click(function () {
                    var url = shoppingCartUrl;
                    if (options.items.IsShoppingCartPage)
                        url = checkoutUrl;
                    $("#HeaderCartForm").attr("action", url);
                    $("#HeaderCartForm").submit();
                }));

        $cartActions.appendTo($bodyCart);

        return $bodyCart;

    };

    $.fn.minicart.defaults = {
        ShoppingCartUrl: '',
        CheckoutUrl: '',
        DeleteItemUrl: '',
        CartImageUrl: '',
        CloseImageUrl: '',
        CheckoutNavUrl: '',
        items: {},
        IsShowminicart: false
    };

})(jQuery)

