
$.fn.shoppingcart = function (options) {
    var settings = $.extend({
        cartUrl  : '',
        stockUrl : '',
        nextStepUrl : ''
    }, options);

    function stockAlert(product_id) {
        $.fancybox({
            href : settings.stockUrl + '/' + product_id
        });
    }

    var cart = $(this);

    cart.bind('reload', function () {
        $.ajaxSetup({cache: false});
        cart.load(settings.cartUrl, function (data) {
            cart.find('#next_step').attr('href', settings.nextStepUrl);
            cart.find('a.trash').click(function () {
                $.get($(this).attr('href'), function () {
                    cart.trigger('reload');
                });
                return false;
            });
            cart.find('a.amount').click(function () {
                $.getJSON($(this).attr('href'), function(response) {
                    if (response == true) {
                        cart.trigger('reload');
                    } else if (response.error) {
                        stockAlert(response.product_id);
                    }
                });
                return false;
            });
            cart.find('form.product_options_form').each(function () {
                var form = $(this).ajaxForm({
                    success : function () {
                        cart.trigger('reload');
                    }
                });
                form.find('select').change(function () {
                    form.trigger('submit');
                });    
            });
        });// load
    });// reload

    cart.trigger('reload');

    return cart;
};

