/* 
 * AjaxCartLinkCollection
 *
 * Collection of links that redirect link action from cart.php
 * to ajaxCart.php and updates cart
 */
var AjaxCartLinkCollection = new Class({
    Implements: [Options],
    options: {
        requestOptions: {
            url: '/ajaxCart.php',
            link: 'chain',
            update: 'blockCart',
            useWaiter: true
        },

        waiterOptions: {
            baseHref: '/img/',
            img: {
                src: 'waiter_mxs.gif'
            }
        },
        
        originalPathName: 'cart.php'
    },

    initialize: function(links, options) {
        this.links = $$(links);
        this.setOptions(options);
        this.linkCollection = this.setupLinkCollection();
        this.blockCart = $('blockCart');

        this.waiter = new Waiter(this.blockCart);
        this.request = this.setupRequest();
        this.updateBlock = $(this.options.requestOptions.update);
    },

    setupLinkCollection: function() {
        return this.links.filter(function(link) {
            return link.pathname.contains(this.options.originalPathName);
        }, this).map(function(link) {
            link.addEvent('click', function(event) {
                event.preventDefault();
                this.doAjaxUpdate(link);
            }.bind(this));
        }, this);
    },

    setupRequest: function() {
        waiterOptions = {
            waiterOptions: this.options.waiterOptions
        };
        
        options = $merge(this.options.requestOptions, waiterOptions);
        return new Request.HTML(options);
    },
    
    doAjaxUpdate: function(link) {
        link.blur();
        //this.waiter.toggle();
        this.request.post(this.options.requestOptions.url + link.search);
    }
});

