/*
 * Client-side basket class
 */
function Basket(numberOfItemsContainer, thankYouMessage)
{
    this.ShowThankYouMessage = function() {
        if (this.thankYouMessage)
        {
            /* Flash the thank you message */
            this.thankYouMessage.hide();
            new Effect.Appear(this.thankYouMessage);
            Element.hide.delay(5, this.thankYouMessage);
        }
    };
    
    this.AddBooking = function(courseTitleId, courseTypeId, courseDateId, pageId, bookPageId) {
        new Ajax.Request('BasketAction.aspx', {
            parameters: {
                action: 'add-booking',
                course_date_id: courseDateId,
                course_type_id: courseTypeId,
                course_title_id: courseTitleId,
                page_id: pageId,
                book_page_id: bookPageId
            },
            onSuccess: function(transport) {
                // Two cases to handle here
                // For credit card basket, all is done in ajax call
                // which returns the number of items in the basket
                // For other areas, the page to redirect to is returned
                var ch0 = transport.responseText.charAt(0);
                if (ch0 > '0' && ch0 < '9')
                {
                    var numberOfItems = transport.responseText;
                    if (numberOfItemsContainer)
                    {
                        numberOfItemsContainer.update(numberOfItems);
                        numberOfItemsContainer.fire('basket:change');
                    }
                    this.ShowThankYouMessage();
                }
                else if (transport.responseText == '-1')
                {
                    // An error occurred - alert the user
                    alert('An error occurred while adding an item to your basket');
                }
                else
                {
                    window.location = transport.responseText;
                }
            }.bind(this)
        });
    };
    
    this.GetNumberOfItems = function() {
        if (this.numberOfItemsContainer)
        {
            return this.numberOfItemsContainer.innerHTML;
        }
        else
        {
            return -1;
        }
    };
    
    if (numberOfItemsContainer)
    {
        this.numberOfItemsContainer = numberOfItemsContainer;
        numberOfItemsContainer.basket = this;
    }
    if (thankYouMessage)
    {
        this.thankYouMessage = thankYouMessage;
    }
}
