﻿function log(param)
{
    if(typeof(console) != 'undefined')
    {
        console.log(param);
    }
}

function basketAction(sender)
{   
    sendRequest(sender.attr('href'),onBasketActionCallback);
    
    return false;
}

function onQuantityChanged()
{
    basketOnChanged($(this));
    return false;
}

function basketOnChanged(sender)
{
    if(!Number(sender.attr('value')))
    {
        sender.val(1);
    }
    
    if(Number(sender.attr('value')) >= 1)
    {
        var productID = sender.attr('id').split('-')[1];

        sendRequest($('#producttitle-' + productID + ' a').attr('href') + '/set/' + sender.attr('value'),onBasketActionCallback);
        return false;
    }
    else
    {
        sender.val(1);
    }
}
 
function sendRequest(url,callback)
{
    $.getJSON(url + "?c=?", callback);
   
}

function onBasketActionCallback(data)
{
    log(data);
    buildShoppingBasket(data);
}

function buildShoppingBasket(basket)
{
    var total = 0;
    var deliverytotal = 0;
    var pieces = 0;
    var currentProductID = 0;

    // includes calculation for the vouchervalue!
    total = basket.Total;
    deliverytotal = basket.TransportCost;
    if($('#productidhidden').length > 0)
    {
        currentProductID = $('#productidhidden').val();
    }
  
    for(var i=0; i < basket.Products.length;i++)
    {
        pieces += basket.Products[i].Pieces;
        var id = basket.Products[i].ID;
        
        //Check if we are on the basket page
        if($('#basket-table').length > 0)
        {
            $('#quantity-' + id).val(basket.Products[i].Pieces);
            $('#subtotal-' + id).text(prepareDecimal(basket.Products[i].Pieces * basket.Products[i].Price));
            
            var del = $('#delete-' + id + ' a');
            if(del.length > 0)
            {
                del.attr('href',del.attr('href').substring(0,del.attr('href').indexOf('/remove') + 7) + '/' + basket.Products[i].Pieces);
            }
            
            if(basket.Products[i].Pieces == 1)
            {
                $('#subtract-' + id).hide();
            }
            else
            {
                $('#subtract-' + id).show();
            }

            if (basket.Products[i].Pieces >= basket.Products[i].Orderable)
            {
                $('#add-' + id).attr('style','visibility:hidden');
            }
            else
            {
                $('#add-' + id).attr('style', '');
            }
        }
        //check if we are on a page with a basket on the right/in the sidebar
        else if($('#cart-items-holder').length > 0)
        {
            if(currentProductID > 0 && currentProductID == id && (basket.Products[i].Orderable <= basket.Products[i].Pieces))
            {
                $('body').addClass("outofstock");
                $('#cart-add div a').hide();
                $('#cart-add div').html('<span class="label" title="' + getResource("Label.AddToBasket.MaximumReached") + '">' + getResource("Label.AddToBasket.MaximumReached") + '<span></span></span>');
                $('#product-status').text(getResource("Label.Stock.False"));
            }
            
            if($('#cart-items-holder li').length <= 0)
            {
                $('#' + checkoutActions).show();
                $('#baskettitle').hide();
            }
        
            var label = basket.Products[i].Pieces + ' x ' + basket.Products[i].Name;
            if($('#product-' + id).length > 0)
            {
                $('#product-' + id + ' p a').text(label);
                $('#product-' + id + ' p a').attr('title',label);
                
                $('#product-' + id + ' a').attr('title',label);

                $('#product-' + id + ' img').attr('alt',label);
            }
            else
            {
                var itemHTML = "<li id='product-" + id + "'><p>";
                itemHTML = itemHTML + "<a href='" + basket.Products[i].URL + "' title='" + label + "'>" + label + "</a>";
                itemHTML = itemHTML + "</p>"
                var imagesrc = basket.Products[i].Image;
                if (imagesrc == '')
                {
                    imagesrc = getResource("ProductImagePath").replace('~', '') + "/no_image-small.jpg";
                }
                itemHTML = itemHTML + "<img src='" + imagesrc + "' alt='" + label + "'/>";
                itemHTML = itemHTML + "<a class='item' href='" + basket.Products[i].URL + "' title='" + label + "'></a>";
                itemHTML = itemHTML + "</li>";
                $('#cart-items-holder').append(itemHTML);
            }
        }
    }
    
    //Remove
    if(basket.Products.length <= 0)
    {
        $.each($("tr[id^='product']"),function()
        {
            $(this).remove();
        });
        
        $('#basket-table').hide();
        $('.checkout-section').hide();
        $('#' + noBasketSection).show();
    }
    else if($("tr[id^='product']").length > basket.Products.length)
    {
        $.each($("tr[id^='product']"),function()
        {
            var found = false;
            for(var i=0; i < basket.Products.length; i++)
            {
                if($(this).attr('id') == ('product-' + basket.Products[i].ID))
                {
                    found = true;
                }
            }
            
            if(!found)
            {
                $(this).remove();
            }
        });

        $("#basket-table tbody tr:odd").removeClass('odd').addClass('even');
        $("#basket-table tbody tr:even").removeClass('even').addClass('odd');
    }
 
    //Total   
    log(total);
    $('#baskettotal').text(prepareDecimal(total));
    $('#deliverytotal').text(prepareDecimal(deliverytotal));
    var itemcountlabel;
    if(typeof(labels) != 'undefined')
    {
        itemcountlabel = labels["more"];
        if(pieces == 1)
        {
            itemcountlabel = labels["one"];
        }
    }
    
    $('#item-count').text(pieces);
    $('#item-count-label').text(itemcountlabel);

    positionBuyMore();
}

function prepareDecimal(input)
{
    //settings
    var precision = 2;

	//first, round to a precision of two
	var precisionFactor = Math.pow(10,precision);
	
	input = Math.round(input*precisionFactor);
	input = input/precisionFactor;

	input = (input + '').replace('.',',');
	if(input.indexOf(",") == -1)
	{
		input = input + ',';
		for(var i = 1; i <= precision; i++)
		{
		    input += '0';
		}
	}
	else if(input.indexOf(",") + (precision+1) > input.length)
	{
		input = input + '0';
	}
	
	return input;
}
