﻿var Basket =
{
    HeaderTemplate: '<table cellpadding="0" cellspacing="0"><tr><th></th><th>Item</th><th>Size</th><th>Qty</th><th>Price</th><th>Total</th><th></th><th></th></tr>',
    BasketPageMessageTemplate: '',
    LineTemplate1: '<tr>',
    LineTemplate2: '<td><a href="/Product.aspx?ProductId=%ProductId%"><img src="%ImageUrl%" alt="img"></a></td>',
    LineTemplate3: '<td><a href="/Product.aspx?ProductId=%ProductId%">%Name%</a></td>',
    LineTemplate4: '<td>%ProductSize%</td>',
    LineTemplate5: '<td><input id="txt%ProductId%Quantity" name="" size="1" value="%Quantity%" type="text"></td>',
    LineTemplate5ForGT: '<td>%Quantity%</td>',
    LineTemplate6: '<td>%LocalUnitPriceAfterDiscount%</td>',
    LineTemplate7: '<td class="bold">%LocalLinePriceAfterDiscount%</td>',
    LineTemplate8: '<td><a href="#" onclick="Basket.SetProductQuantity(\'%ProductId%\',\'%VariantId%\',$(\'#txt%ProductId%Quantity\').val()); return false;">Edit</a></td>',
    LineTemplate8ForGT: '<td></td>',
    LineTemplate9: '<td class="remove"><a href="#" onclick="Basket.SetProductQuantity(\'%ProductId%\',\'%VariantId%\',\'0\'); return false;"><img src="/templates/images/buttons/remove_x.gif" alt="Remove"></a></td>',
    LineTemplate10: '</tr>',
    FooterTemplate: '<tr><td colspan="8"><hr></td></tr><tr><td colspan="5" class="textRight bold">Total (inc Vat)</td><td class="bold">%LocalSubtotalAfterDiscount%</td><td colspan="2"></td></tr><tr><td colspan="8" class="alighnRight" style="padding-top: 10px;"><a href="/Basket.aspx" class="btnCheckout"></a></td></tr></table>',
    BasketItemsTemplate: '%ItemCount% Items',
    LocalRenderFunction: function(data) {
        // reassign this function when you need page specific JS to run on an update
    },
    AddProductQuantity: function(productId, variantId, quantity) {
        if (quantity == null) quantity = 1;
        SBM.Ajax.BasketService.AddProductQuantity(productId, variantId, quantity, Function.createDelegate(this, this.Render));
    },
    SetProductQuantity: function(productId, variantId, quantity) {
        if (quantity == null) quantity = 1;
        SBM.Ajax.BasketService.SetProductQuantity(productId, variantId, quantity, Function.createDelegate(this, this.Render));
    },
    Render: function(data) {
        this.RenderBasket(data);
        this.LocalRenderFunction(data);
        $('#basketContent').show();
        $.scrollTo(0, 800);
    },
    RenderBasket: function(data) {

        var FullTemplate = '';
        var FullTemplateForGT = '';
        var html = '';
        var line = '';

        var url = window.location.href;

        if (url.toLowerCase().indexOf("basket") != -1) {

            FullTemplate = this.BasketPageMessageTemplate;
            html += FullTemplate;
        }
        else {

            html += this.HeaderTemplate;
            FullTemplate = this.LineTemplate1 + this.LineTemplate2 + this.LineTemplate3 + this.LineTemplate4 + this.LineTemplate5 + this.LineTemplate6 + this.LineTemplate7 + this.LineTemplate8 + this.LineTemplate9 + this.LineTemplate10;
            FullTemplateForGT = this.LineTemplate1 + this.LineTemplate2 + this.LineTemplate3 + this.LineTemplate4 + this.LineTemplate5ForGT + this.LineTemplate6 + this.LineTemplate7 + this.LineTemplate8ForGT + this.LineTemplate9 + this.LineTemplate10;

            for (var i = 0; i < data.Items.length; i++) {

                if (data.Items[i].ProductId == "GT")
                    line = FullTemplateForGT;
                else
                    line = FullTemplate;

                line = line.replace(/%ImageUrl%/g, data.Items[i].ImageUrl);
                line = line.replace(/%Name%/g, data.Items[i].Name);
                line = line.replace(/%ProductId%/g, data.Items[i].ProductId);
                line = line.replace(/%ProductSize%/g, ((data.Items[i].ProductSize == "") ? "--" : ("Size: " + data.Items[i].ProductSize)));
                line = line.replace(/%VariantId%/g, data.Items[i].VariantId);
                line = line.replace(/%Description%/g, data.Items[i].Description);
                line = line.replace(/%LocalUnitPriceAfterDiscount%/g, data.Items[i].LocalUnitPriceAfterDiscount);
                line = line.replace(/%Quantity%/g, data.Items[i].Quantity);
                line = line.replace(/%LocalLinePriceAfterDiscount%/g, data.Items[i].LocalLinePriceAfterDiscount);
                html += line;
            }

            html += this.FooterTemplate;
            html = html.replace(/%LocalTotalAfterDiscount%/g, data.LocalTotalAfterDiscount);
            html = html.replace(/%LocalSubtotalAfterDiscount%/g, data.LocalSubtotalAfterDiscount);
            html = html.replace(/%LocalShippingTotalAfterDiscount%/g, data.LocalShippingTotalAfterDiscount);
        }

        var basketItemsHtml = '';
        basketItemsHtml += this.BasketItemsTemplate;
        basketItemsHtml = basketItemsHtml.replace(/%ItemCount%/g, data.ItemCount);

        $('#basketContent').empty();
        $('#basketContent').append(html);

        $('#basketItems').empty();
        $('#basketItems').append(basketItemsHtml);
    }
};