Umnitsa.Interface.Products = function() {
    return {
        initFilters : function(params) {
            Umnitsa.Interface.Products.Filters(params);
        },
        initList : function(params) {
            Umnitsa.Interface.Products.List(params);
        },
        initPage : function(params) {
            Umnitsa.Interface.Products.Page(params);
        }
    }
}();

/**
 * Настройка объектов в списке каталога
 * @param {Object} [params] параметры
 */
Umnitsa.Interface.Products.List = function(params) {

    var params = mergeHash(params, {
        listSelector : '.prod-list'
    });

    var $list = $(params.listSelector);

    function zoomHandler() {
        Umnitsa.Popup.showPicture(this.href);
        return false;
    }

    function buyHandler() {
        var id = this.getElementsByTagName('input')[0].value;
        if (id) {
            eStore.addToBasket(id, this);
        }
    }

    function wishListDelHandler() {
        var $item = $(this).parent();
        Umnitsa.getJSON({
            '_do' : 'wish_list',
            'method' : 'delete',
            'id' : $item.find('input[name="product_id"]').val()
        }, function() {
            $item.remove();
        });
        return false;
    }


    function _init_() {
        $list.find('.zoom').click(zoomHandler);
        $list.find('.buy-btn').click(buyHandler);
        $list.find('a.del').click(wishListDelHandler)
    }

    _init_();
}


/**
 * Настройка фильтров каталога
 * @param {Objects} [params] параметры
 */
Umnitsa.Interface.Products.Filters = function(params) {

    var params = mergeHash(params, {
        filterSelector : '#products-filter'
    });

    var $filter = $(params.filterSelector);

    function _init_() {
        if ($filter.length) {
            var $select = $filter.find('.select');
            for (var i = 0; i < $select.length; i++) {
                var $li = $select.eq(i).find('li');
                var $active = $li.filter('.active');
                if (!$active.length) {
                    $active = $li.eq($li.length - 1);
                }
                if ($active.length) {
                    setActiveFilterItem($active.removeClass('active'));
                }
            }
            $select.click(selectClickHandler);
            $filter.find('.list a').click(filterLinkClickHandler);
            $filter.find('form').click(filterFormClickHandler);
        }
    }


    function setActiveFilterItem($item) {
        var $ul = $item.parent();
        $ul.find('.active').remove();
        var $selected = $item.clone()
            .addClass('active')
            .appendTo($ul);
        $selected.find('a').removeAttr('href');
    }

    function selectClickHandler() {
        var $this = $(this);
        var $list = $this.find('.list');
        if (!$list.hasClass('list-d')) {
            $list.addClass('list-d');
            $list.height($list.find('ul').get(0).scrollHeight);
            window.setTimeout(function() {
                $(document).one('click', function() {
                    $list.height($this.height());
                    $list.removeClass('list-d');
                }) }
                , 50);

        }
    }

    function filterLinkClickHandler() {
        var $this = $(this);
        if (!$this.hasClass('active')) {
            setActiveFilterItem($this.parent());
        }
    }

    function filterFormClickHandler() {
        return false;
    }
    _init_();
}

