Beletry.cls.ProductsBlock = function() {
    var type = 'top';
    var order = 'price';
    var order_dir = 'asc';
    var page = 1;

    var self = this;

    var container = $('#products_block');
    var types = ['top', 'bestsellers', 'action', 'news', 'sale', 'prepared'];
    var cycleCurrent = 1;

    var cycleTimer = setInterval(function() {
        if (cycleCurrent >= types.length) {
            cycleCurrent = 0;
        }
        self.setType(types[cycleCurrent++]);
        self.load(false);
    }, 20000);


    this.init = function() {
        container.find('.Top_Bar1').click(function() {
            self.setType('top');
            self.load();
            return false;
        });

        container.find('.Top_Bar2').click(function() {
            self.setType('action');
            self.load();
            return false;
        });

        container.find('.Top_Bar3').click(function() {
            self.setType('news');
            self.load();
            return false;
        });

        container.find('.Top_Bar4').click(function() {
            self.setType('sale');
            self.load();
            return false;
        });

        container.find('.Top_Bar5').click(function() {
            self.setType('prepared');
            self.load();
            return false;
        });

        container.find('.Top_Bar6').click(function() {
            self.setType('bestsellers');
            self.load();
            return false;
        });

        container.find('#pb_sort_name').click(function() {
            self.orderBy('name');
            self.load();
            return false;
        });

        container.find('#pb_sort_price').click(function() {
            self.orderBy('price');
            self.load();
            return false;
        });

        container.find('#pb_sort_asc').click(function() {
            self.orderDir('asc');
            self.load();
            return false;
        });

        container.find('#pb_sort_desc').click(function() {
            self.orderDir('desc');
            self.load();
            return false;
        });
    }

    this.setType = function(t) {
        if (self.validType(t)) {
            type = t;

            var btn = null;
            if (t == 'top') {
                btn = '.Top_Bar1';
            } else if (t == 'action') {
                btn = '.Top_Bar2';
            } else if (t == 'news') {
                btn = '.Top_Bar3';
            } else if (t == 'sale') {
                btn = '.Top_Bar4';
            } else if (t == 'prepared') {
                btn = '.Top_Bar5';
            } else if (t == 'bestsellers') {
                btn = '.Top_Bar6';
            }

            container.find('.Top_Bar a').removeClass('Active');
            container.find(btn).addClass('Active');

            page = 1;
        }
        return this;
    }

    this.getType = function() {
        return type;
    }

    this.orderBy = function(colName) {
        if (colName == 'price' || colName == 'name') {
            order = colName;

            container.find('#pb_sort_price').removeClass('SortActive');
            container.find('#pb_sort_name').removeClass('SortActive');

            if (colName == 'price') {
                container.find('#pb_sort_price').addClass('SortActive');
            } else if (colName == 'name') {
                container.find('#pb_sort_name').addClass('SortActive');
            }
        }
        return this;
    }

    this.orderDir = function(dir) {
        if (dir == 'asc' || dir == 'desc') {
            order_dir = dir;

            container.find('#pb_sort_asc').removeClass('SortActive');
            container.find('#pb_sort_desc').removeClass('SortActive');

            if (dir == 'asc') {
                container.find('#pb_sort_asc').addClass('SortActive');
            } else {
                container.find('#pb_sort_desc').addClass('SortActive');
            }
        }
        return this;
    }

    this.setPage = function(p) {
        page = p;
        return this;
    }

    this.load = function(clearTimer) {
        if (clearTimer == null || clearTimer == true) {
            self.disableCycle();
        }

        this.showLoader();

        $.get(
            Beletry.baseUrl + 'index/productsblock/type/'+type+'/order/'+order+'/dir/'+order_dir+'/p/'+page,
            {},
            function(data) {
                var $content = $('#pb_content');
                $content.fadeOut(400, function() {
                    $content.html(data);
                    $content.fadeIn(400, function() {
                        self.hideLoader();
                    });
                });
            }
        );
    }

    this.showLoader = function() {
        container.find('.products-block-loader').show();
    }

    this.hideLoader = function() {
        container.find('.products-block-loader').hide();
    }

    this.validType = function(t) {
        return (t == 'top' || t == 'action' || t == 'news' || t == 'sale' || t == 'prepared' || t == 'bestsellers');
    }

    this.disableCycle = function() {
        if (cycleTimer != null) {
            clearInterval(cycleTimer);
            cycleTimer = null;
        }
    }

    this.init();

    var url = window.location.href;
    var uPos = url.lastIndexOf('/?');
    if (uPos > -1) {
        var typePart = url.slice(uPos + 2);
        if (this.validType(typePart)) {
            this.setType(typePart);
            this.load();
        }
    }
}
