var AjaxBasket = Class.create();
AjaxBasket.prototype = {
    initialize: function(options)
    {
        this.options = options;
    },
    add: function(id, qty, btn)
    {
        var _this = this;
        new Ajax.Request(
            _this.options.addUrl + 'id/' + id + '/qty/' + qty,
            {
                method: 'get',
                onSuccess: function(transport)
                {
                    if (transport && transport.responseText)
                    {
                        try {
                            response = eval('(' + transport.responseText + ')');
                        }
                        catch (e) {
                            response = {};
                        }
                        var overlay = $j('<div class="ajaxbasket-message"></div>');
                        if (response.success)
                        {
                            overlay.addClass('ajaxbasket-message-success');
                            _this.refresh();
                        }
                        else
                        {
                            overlay.addClass('ajaxbasket-message-failure');
                        }
                        overlay.html(response.message);
                        var pos = $j(btn).offset();
                        overlay.css(
                        {
                            'left': (pos.left + $j(btn).width()) + 'px',
                            'top':pos.top + 'px',
                            'display':'none'
                        });
                        $j('body').append(overlay);
                        overlay.fadeIn('fast', function()
                        {
                            setTimeout(function()
                            {
                                overlay.fadeOut('slow', function()
                                {
                                    overlay.remove();
                                });
                            }, 2000);
                        });
                    }
                }
            }
        );
    },
    remove: function(itemId)
    {
        var _this = this;
        new Ajax.Request(
            _this.options.removeUrl + 'id/' + itemId,
            {
                method: 'get',
                onSuccess: function(transport)
                {
                    if (transport && transport.responseText)
                    {
                        try {
                            response = eval('(' + transport.responseText + ')');
                        }
                        catch (e) {
                            response = {};
                        }
                        _this.refresh();
                    }
                }
            }
        );
    },
    refresh: function()
    {
        var _this = this;
        new Ajax.Request(
            _this.options.sidebarUrl,
            {
                method: 'get',
                onSuccess: function(transport)
                {
                    var html = $j(transport.responseText);
                    $j('div.cart-box').html(html.html());
                }
            }
        );
    }
};
