﻿$(document).ready(function () {

    $(".addProduct").click(function (e) {
        e.preventDefault();
        var targ = this.className;
        var productId = targ.substring(targ.lastIndexOf('#') + 1, targ.length).replace("'", "'");
        var temp = targ.replace('#' + productId, "");

        var productVariantId = temp.substring(temp.lastIndexOf('#') + 1, temp.length).replace("'", "'");

        var buttonClicked = $(this);
        buttonClicked.hide();
        $(this).before("<img src='/App_Themes/PremierVinters/images/ajax-loader.gif' class='loading' //>");


        var clonedProductPic = $(".productAddToBasket" + productId);

        if (clonedProductPic.offset() != null) {
            var productX = $(".productAddToBasket" + productId).offset().left;
            var productY = $(".productAddToBasket" + productId).offset().top;
            var basketEl = $("#basketPosition");
            if (basketEl.length == 0) {
                basketEl = $(".ico-cart");

            }

            var basketX = basketEl.offset().left;

            if (basketX == 0)
                basketX = 1100;


            var basketY = basketEl.offset().top;

            var gotoX = basketX - productX;
            var gotoY = basketY - productY;
            var newImageWidth = $(".productAddToBasket" + productId).width() / 3;
            var newImageHeight = $(".productAddToBasket" + productId).height() / 3;

            $(".productAddToBasket" + productId)
                        .clone()
                        .prependTo(".productAddToBasket" + productId)
                        .css({ 'position': 'absolute' })
                        .animate({ opacity: 0.001, marginLeft: gotoX, marginTop: gotoY, width: 1, height: 1 }, 600, function () { //leave duartion as 600 - Chrome didn't like less
                            $(this).remove();

                        });

                        $.getJSON('/CartWebHandler.ashx?productVariantId=' + productVariantId,
                            function (data) {
                                insertCallback(data, buttonClicked);
                            });
        }
        else
            $.getJSON('/CartWebHandler.ashx?productVariantId=' + productVariantId,
                        function (data) {
                            insertCallback(data, buttonClicked);
                        });
    });

    $(".removeProduct").click(function (e) {
        e.preventDefault();
        var data = $(this).metadata();

        $.getJSON('/CartWebHandler.ashx?cartProductId=' + data.productId,
                function (data) {
                    removeCallback(data);
                });
    });
});

function removeProductNewest(CartItemId) {
    $.getJSON('../../../CartWebHandler.ashx?cartProductId=' + CartItemId, function (data) {
        removeCallback(data);
    });
}

function insertCallback(data, buttonClicked) {
    if (data.RedirectTo != undefined && data.RedirectTo != '') {
        window.location.replace(data.RedirectTo);
        return;
    }
    addItemToHeaderBasket(data);
    addItmToLHCart(data);
    addItemToMiniBasket(data);

    buttonClicked.show();
    var p = buttonClicked.parent();

    $(p).find('img.loading').remove();

    $.cursorMessage('Product has been added to your cart.');
}

function addItemToHeaderBasket(data) {
    $(".your_basket_text02 a").html("(" + data.Quantity + ")");
}

function addItmToLHCart(data) {
    //  and for LH cart view count..
    var itemInCart = $(".cart-itemcount span");
    itemInCart[0].innerHTML = data.Quantity;

    //  and total cost
    var cartTotal = $(".cart-total span");
    cartTotal[0].innerHTML = data.Price;

    //  and delivery
    var deliveryTotal = $(".cart-delivery span");
    deliveryTotal[0].innerHTML = data.Delivery;
}

function addItemToMiniBasket(data) {
    //  check that the tblMiniCart exists. if not, create a table.
    var tblMiniBasket = document.getElementById("tblMiniCart");

    if (tblMiniBasket == null) {

        var CartStr = '<div class="items"><table id="tblMiniCart"><tbody><tr class="' + data.LastAddedCartItemId + '"><td valign="top" style="vertical-align:top;">' +
                                '<span class="quantity">' + data.LastAddedItemQty + ' x </span>' +
                                '</td><td>' +
                                '<a href="' + data.LastAddedItemUrl + '" class="product-name" >' + data.LastAddedItemTitle + '</a><br>' +
                                '<span class="productPrice">' + data.LastAddedItemPrice + '</span><br>' +
                                '<div class="remove-button">' +
                                '<a href=\'#\' onclick=\'removeProductNewest(' + data.LastAddedCartItemId + ')\'>[remove]</a>' +
                                '</div></td></tr></tbody></table></div>';

        //  check the dummy cart div is avaiable
        var dummyCart = document.getElementById("temp-items");
        if (dummyCart != null) {
            document.getElementById("temp-items").innerHTML = CartStr;
            // hide'empty basket' msg
            $(".no-items-basket span").html("");
        }
    }
    else {//  table already exists, so append row

        $(".no-items-basket span").html("");

        var quantitySpan = $('tr.' + data.LastAddedCartItemId + ' span.quantity');

        if (quantitySpan[0] == null) { //Check row already exists or not if not add new row
            $('#tblMiniCart > tbody:last').append('<tr class="' + data.LastAddedCartItemId + '"><td colspan="2"><li class="separator">&nbsp;</li></td></tr>' +
                                                    '<tr class="' + data.LastAddedCartItemId + '"><td valign="top" style="vertical-align: top;">' +
                                                    '<span class="quantity">' + data.LastAddedItemQty + ' x </span>' +
                                                    '</td><td>' +
                                                    '<a href="' + data.LastAddedItemUrl + '" class="product-name" >' + data.LastAddedItemTitle + '</a><br>' +
                                                    '<span class="productPrice">' + data.LastAddedItemPrice + '</span><br>' +
                                                    '<div class="remove-button">' +
                                                    '<a href=\'#\' onclick=\'removeProductNewest(' + data.LastAddedCartItemId + ')\'>[remove] </a>' +
                                                    '</div></td></tr>');
        }
        else {// Row already exists add quantity

            var quantity = 0;
            quantity = quantitySpan[0].innerHTML.replace('x', '').trim(' ');

            var qty = parseInt(quantity) + 1;

            quantitySpan[0].innerHTML = qty + ' x ';
        }
    }
}

function removeCallback(data) {
    $.cursorMessage('Product has been removed from your cart.');
    //  remove table row
    $("." + data.RemovedCartItemId).replaceWith("");
    //  set header total
    $(".your_basket_text02 a").html("(" + data.Quantity + ")");
    //  and for rh cart view count..
    $(".cart-itemcount span").html(data.Quantity);
    //  and total cost
    $(".cart-total span").html(data.Price);
    //  and delivery
    $(".cart-delivery span").html(data.Delivery);

    if (data.Quantity == 0) {
        $(".no-items-basket span").html("You have no items in your shopping cart.");
    }
}


