﻿var Basket =
{
    HeaderTemplate: '<table cellpadding="0" cellspacing="0">',
    BasketPageMessageTemplate: '',
    LineTemplate1: '<tr>',
    LineTemplate2: '<td align="center" rowspan="2" style="max-width: 50px;"><a href="%ProductPageUrl%%ProductId%"><img src="%ImageUrl%" alt="%Name%"></a></td>',
    LineTemplate3: '<td><table cellpadding="0" cellspacing="0"><tr><td><a href="%ProductPageUrl%%ProductId%"><b>%Name%</b></a></td></tr><tr><td class="remove" align="right"><a href="#" class="miniBasketRemove" onclick="SetProductQuantity(\'%ProductId%\',0); return false;">Remove</a></td></tr></table></td>',
    LineTemplate4: '<td class="bold" style="text-align:right; min-width: 85px;">%Quantity% x %UnitPriceAfterDiscount%</td>',
    LineTemplate5: '</tr>',
    LineTemplate6: '<tr><td colspan="3">%LineDiscountNames%</td></tr>',
    FooterHardRuleTemplate: '<tr><td colspan="3"><hr></td></tr>',
    BasketDiscountTemplate: '<tr><td colspan="3">%BasketDiscountName%</td></tr>',
    FooterTemplate: '<tr><td colspan="2" class="textRight bold">Sub Total</td><td class="bold" style="text-align:right;">%SubtotalAfterDiscount%</td></tr><tr><td colspan="3" class="alignRight" style="padding-top: 10px;"><a href="%BasketPageUrl%" class="button fr">GO TO CHECKOUT</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, quantity)
    {
        alert("this.AddProductQuantity");
        if (quantity == null) quantity = 1;
        //        REN.Ajax.AjaxBasketService.AddProductQuantity(productId, quantity, Function.createDelegate(this, this.Render));

        jQuery.ajax({
            type: 'POST',
            url: '/Ajax/AjaxBasketService.asmx/AddProductQuantity',
            data: '{productId : "' + productId + '", quantity : ' + quantity + '}',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function(data) { Basket.RenderBasket(data.d) },
            error: function() { /* window.location = '/'; */ }
        });

    },
    SetProductQuantity: function(productId, quantity)
    {
        alert("this.SetProductQuantity");
        if (quantity == null) quantity = 1;
        //REN.Ajax.AjaxBasketService.SetProductQuantity(productId, quantity, Function.createDelegate(this, this.Render));

        jQuery.ajax({
            type: 'POST',
            url: '/Ajax/AjaxBasketService.asmx/SetProductQuantity',
            data: '{productId : "' + productId + '", quantity : ' + quantity + '}',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function(data) { Basket.RenderBasket(data.d) },
            error: function() { /* window.location = '/'; */ }
        });
    },
    Render: function(data)
    {
        this.RenderBasket(data);
        this.LocalRenderFunction(data);

        // Don't scroll on Quickshop
        var url = window.location.href;
        if (url.toLowerCase().indexOf("quickshop") == -1)
        {
            jQuery.scrollTo(0, 800);
        }

        jQuery('#basketContent').show();
        setTimeout(function() { jQuery('#basketContent').fadeOut(); }, 3000);
    },
    RenderBasket: function(data)
    {
        var FullTemplate = '';
        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;

            for (var i = 0; i < data.Items.length; i++)
            {
                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(/%Description%/g, data.Items[i].Description);
                line = line.replace(/%UnitPriceBeforeDiscount%/g, data.Items[i].UnitPriceBeforeDiscount);
                line = line.replace(/%LineDiscount%/g, data.Items[i].LineDiscount);
                line = line.replace(/%LineDiscountNames%/g, data.Items[i].LineDiscountNames);
                line = line.replace(/%Quantity%/g, data.Items[i].Quantity);
                line = line.replace(/%LinePriceAfterDiscount%/g, data.Items[i].LinePriceAfterDiscount);
                line = line.replace(/%UnitPriceAfterDiscount%/g, data.Items[i].UnitPriceAfterDiscount);
                html += line;
            }

            html += this.FooterHardRuleTemplate;

            if ((data.BasketDiscountName != null) && (data.BasketDiscountName != ''))
            {
                html += this.BasketDiscountTemplate;
                html = html.replace(/%BasketDiscountName%/g, data.BasketDiscountName);
            }

            html += this.FooterTemplate;
            html = html.replace(/%SubtotalAfterDiscount%/g, data.SubtotalAfterDiscount);
            html = html.replace(/%BasketPageUrl%/g, data.BasketPageUrl);
            html = html.replace(/%ImagesRootUrl%/g, data.ImagesRootUrl);
            html = html.replace(/%ProductPageUrl%/g, data.ProductPageUrl);
        }

        var basketItemsHtml = '';
        basketItemsHtml += this.BasketItemsTemplate;
        basketItemsHtml = basketItemsHtml.replace(/%ItemCount%/g, data.ItemCount);

        jQuery('#basketContent').empty();
        jQuery('#basketContent').append(html);

        jQuery('#basketItems').empty();
        jQuery('#basketItems').append(basketItemsHtml);
    }
};

function GetBasket()
{
    var url = '';
    if (document.location.href.toLowerCase().indexOf("/usa") != -1)
        url = '/Ajax/AjaxBasketService.asmx/GetBasket';
    else
        url = '/Ajax/AjaxBasketService.asmx/GetBasket';

    jQuery.ajax({
        type: 'POST',
        url: url,
        data: '{}',
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function(data) { Basket.RenderBasket(data.d) },
        error: function() { /* window.location = '/'; */ }
    });

    return false;
}

function AddProductQuantity(productId, quantity)
{
    if (quantity == null) quantity = 1;

    var url = '';
    if (document.location.href.toLowerCase().indexOf("/usa") != -1)
        url = '/Ajax/AjaxBasketService.asmx/AddProductQuantity';
    else
        url = '/Ajax/AjaxBasketService.asmx/AddProductQuantity';

    jQuery.ajax({
        type: 'POST',
        url: url,
        data: '{productId: \'' + productId + '\', quantity: ' + quantity + '}',
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function(data) { Basket.Render(data.d) },
        error: function() { /* window.location = '/'; */ }
    });

    return false;
}

function SetProductQuantity(productId, quantity)
{
    if (quantity == null) quantity = 1;

    var url = '';
    if (document.location.href.toLowerCase().indexOf("/usa") != -1)
        url = '/Ajax/AjaxBasketService.asmx/SetProductQuantity';
    else
        url = '/Ajax/AjaxBasketService.asmx/SetProductQuantity';

    jQuery.ajax({
        type: 'POST',
        url: url,
        data: '{productId: \'' + productId + '\', quantity: ' + quantity + '}',
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function(data) { Basket.Render(data.d) },
        error: function() { window.location = '/'; }
    });

    return false;
}