var ITEM_COUNT = document.getElementById("cartItemCount").value;
var MAX_ITEM_COUNT = 7

function toggleCartState(item_id)
{
    var cb = document.getElementById("cb_" + item_id);
    if (cb)
    {
        disableElement(cb.id)
        if (cb.checked) addItemToCart(item_id);
        else removeItemFromCart(item_id);
    }
}

var addItemToCartHandler = function(resp)
{
    var item = eval('('+resp.responseText+')');
    deleteItem("cartEntry_"+item.id); //remove any possible clones

    ITEM_COUNT++;
    var tbl = $('compareCartTable');

    var td1 = Builder.node('td',[item.Title]);
    var img = Builder.node('img',{src:"/media/i/btn-delete.gif"});
    var a = Builder.node('a',{href: "javascript:void(0)",onclick:"removeItemFromCart('"+item.id+"');"},[img]);
    var td2 = Builder.node('td',[a]);
    var tr = Builder.node('tr',{id: "cartEntry_"+item.id},[td1,td2]);
    tbl.firstChild.appendChild(tr)
    refreshCart();
    Effect.Fade("emptyCart");
    showLink(item.id,'rem');
}

function addItemToCart(item_id)
{
    if (checkEnoughSpace())
    {
        var cartRequest = new Ajax.Request(
                            '/ajax/cart/item/' + item_id +'/add.ajax',
                            {
                                onSuccess:addItemToCartHandler
                            }
                        );
    }
    else
    {
        alert("The cart has reached its maximum product limit.");
    }
}

function removeItemFromCart(item_id)
{
    var cartRequest = new Ajax.Request(
                            '/ajax/cart/item/' + item_id +'/remove.ajax',
                            {
                                onSuccess:removeItemFromCartHandler
                            }
                        );
    
}

function removeItemFromCartHandler(resp)
{
    var item = eval('('+resp.responseText+')');
    deleteItem(item.id);
    refreshCart();
    showLink(item.id,'add');
}

function deleteItem(item_id)
{
    var sp = document.getElementById("cartEntry_" + item_id);
    if (sp != null){
        sp.parentNode.removeChild(sp);
        ITEM_COUNT--;
    }
}

function removeAllItemsFromCart(item_id)
{
    disableElementAll("cb_addItemToCart");

    var cartRequest = new Ajax.Request(
                            '/ajax/cart/item/all/remove.ajax',
                            {
                                onSuccess:removeAllItemsFromCartHandler
                            }
                        );
    
}

function removeAllItemsFromCartHandler(resp)
{
    var cart = document.getElementById('compareCartTable');
/*    var parent = cart.parentNode;
    parent.removeChild(cart);
    var ul = Builder.node('ul', {id:'compare_cart' });
    parent.appendChild(ul);*/

    td = resp.responseText;

    var items = eval('('+resp.responseText+')');
    for (var i = 0; i < items.length; i++)
    {
        item_id = items[i];
        deleteItem(item_id);
        showLink(item_id,'add');
    }
    
    ITEM_COUNT = 0;
    refreshCart();
}

function refreshCart()
{
    var cart = document.getElementById('compare_cart');
    if (ITEM_COUNT == 0)
    {
        Effect.Fade("compareFromCart");
        Effect.Fade("removeAllFromCart");
        Effect.Appear("emptyCart");
    }
    else
    {
        if (ITEM_COUNT == 1)
        {
            Effect.Appear("removeAllFromCart");
            Effect.Fade("compareFromCart");
        }
        else
        {
            Effect.Appear("removeAllFromCart");
            Effect.Appear("compareFromCart");
        }
    }
}

function checkEnoughSpace()
{
    if (ITEM_COUNT >= MAX_ITEM_COUNT) return false
    else return true
}

function showLink(id, type)
{
    if (type == 'add' && $("rem_" + id)&& $("add_" + id)){
        $("rem_" + id).style.display = 'none';
        $("add_" + id).style.display = 'inline';
    }
    else if (type == 'rem'&& $("rem_" + id)&& $("add_" + id)){
        $("add_" + id).style.display = 'none';
        $("rem_" + id).style.display = 'inline';
    }
}
