(function() {

    var fbox;

    function Group(params) {

        var $wrap = $(params.selector);
        attachEvents($wrap);
        drawScroll($wrap);
    }

    function attachEvents($wrap) {
        $wrap.find('a[rel^="prod"]').click(clickHandler);
    }

    function clickHandler() {
        var id = this.getAttribute('rel').substr(4);
        showPopup(id);
        return false;

    }

    function showPopup(id) {
        if (!fbox) {
            fbox = new FBox(Object.merge(USM.fboxParams, {
                constraints : {
                    minHeight : 400,
                    minWidth : 600,
                    maxWidth : 600
                },
                ondraw : function() {
                    this.contentD.find('button').click(function() {
                        fbox.hide();
                    });
                    attachEvents(this.contentD);
                }
            }));
        }
        delete fbox.params.data;
        fbox.params.ajax = {
            url : '/json/',
            '_do' : 'get_prod',
            'id' : id
        };
        fbox.loaded = false;
        if (fbox.hidden) {
            fbox.show();
        } else {
            fbox.loadContent();
        }

    }

    function drawScroll($wrap) {
        var state = 'closed';
        var $btn = $(document.createElement('span'))
            .addClass('btn')
            .html('открыть весь перечнь')
            .prependTo($wrap)
            .click(toggleView);
        $wrap.addClass('group-scroll');
        var $list = $wrap.find('ul').scrollLeft(0);
        var $i = $list.find('li').eq(0);
        var k = $i.width() / $list.width();
        var $l = $(document.createElement('span'))
            .addClass('arr arr-l')
            .appendTo($wrap)
            .mousedown(function() {
                scroll(-1);
                return false;
            });
        var $r = $(document.createElement('span'))
            .addClass('arr arr-r')
            .appendTo($wrap)
            .mousedown(function() {
                scroll(1);
                return false;
            });

        function toggleView() {
            if (state === 'closed') {
                state = 'open';
                $wrap.removeClass('group-scroll');
                this.innerHTML = 'свернуть';
            } else {
                state = 'closed';
                $wrap.addClass('group-scroll');
                this.innerHTML = 'открыть весь перечнь';
            }
        }

        function scroll(d) {
            $list.stop().animate({
                scrollLeft : $list.scrollLeft() + d * k * $list.width()
            }, 150, 'swing');
        }
    }

    USM.Group = Group;

})();
