/**
 * Класс для работы с корзиной
 * @namespace Ocean5
 */

Ocean5.Basket = function() {

    var cForms, block, orderForm;

    /**
     * Хэндлер обновления корзины после запроса
     */
    function _basketUpdateHandler(data) {
        if ((data.item) && (data.item.id)) {
            if (block)
                block.updateItem(data.item, true);

            if (cForms)
                cForms.updateFormById(data.item.id, data.item.count);

            if (orderForm)
                orderForm.updateItemById(data.item.id, data.item.count);
        }
        if (data.deleted) {
            if (block)
                block.removeItemById(data.deleted);

            if (cForms)
                cForms.updateFormById(data.deleted, 0);

            if (orderForm)
                orderForm.removeItemById(data.deleted);
        }
    }

    return {
        /**
         * Инициализация
         */
        init : function() {
            var basketBlockEl = document.getElementById('basket-block');

            if (basketBlockEl)
                block = new Ocean5.Basket.Block(basketBlockEl);

            // Если страница с меню инициализируем формы
            if (Ocean5.interfaceName === 'menu') {
                var items = (block) ? block.getItemsHash() : {};
                cForms = Ocean5.Basket.CForms();
                cForms.init(items);
            }
            if (Ocean5.interfaceName === 'order') {
                orderForm = Ocean5.Basket.Form();
            }
        },

        /**
         * Добавить товар в корзину
         * @param {Number} id идентификатор товара
         * @param {Number} count количество
         */
        add : function(id, count) {
            Ocean5.getJSON({
                '_do' : 'add_to_basket',
                'id' : id,
                'count' : count
            }, _basketUpdateHandler);
        },

        /**
         * Обновить количество товара в корзине
         * @param {Number} id идентификатор товара
         * @param {Number} count количество
         */
        update : function(id, count) {
            Ocean5.getJSON({
                '_do' : 'update_item',
                'id' : id,
                'count' : count
            }, _basketUpdateHandler);
        }
    }
}();

