var Site = {
    
    popupWindow: function(url, width, height) {
        var left = screen.width/2-width/2;
        var top = screen.height/2-height/2;
        var popup = window.open(url, "Popup", "directories=0,scrollbars=auto,toolbar=0,location=0,menubar=0,resizable=0,status=0,width="+width+",height="+height+",left="+left+",top="+top+"");
        
        popup.focus();
    }
    
}

document.addEvent('domready', function() {
    Site.Basket = {
        
        container: $('basketContainer'),
        
        init: function() {
            this.container.getElements('tr[name^=item]').each(function(element) {
                var id = element.getProperty('name').match(/item(.*)/)[1];
                
                // пересчитываем сумму товаров при изменении
                element.getElement('input.item-count').addEvent('keyup', function() {
                    var sum = element.getElement('span.item-price').get('text').toInt() * this.getProperty('value').toInt();
                    if ($type(sum) == false || sum < 0) {
                        sum = 0;
                    }
                    
                    element.getElement('span.item-sum').set('text', sum);
                    
                    Site.Basket.recalc();
                });
                
                // сохраняем изменения
                element.getElement('input.item-count').addEvent('change', function() {
                    var count = this.getProperty('value').toInt();
                    
                    if ($type(count) != 'number') {
                        count = 0;
                    }
                    
                    new Request({url: '/basket/update/?id=' + encodeURI(id) + '&count=' + count, method: 'get'}).send();
                }); 
            });
            
            // смена типа цены 
            (function() {
                var form = this.container.getElement('#change-price-type');
                if (form) {
                    form.getElement('select').addEvent('change', function(e) {
                        var myHTMLRequest = new Request.HTML({
                            url: '/basket/change-price-type/',
                            update: 'basketContainer',
                            data: form.toQueryString(),
                            onComplete: function() {
                                Site.Basket.init();
                            }
                        }).post();
                    });
                }
            }.bind(this)());
        },
        
        recalc: function() {
            var totalSum = 0;
            var isEmpty = 1;
            this.container.getElements('span.item-sum').each(function(element) {
                totalSum += element.get('text').toInt();
                isEmpty = 0;
            });
            if (isEmpty) {
                this.container.set('text', 'Ваша корзина пуста.');
            } else {
                this.container.getElement('span[name=total-sum]').set('text', totalSum);
            }
        },
        
        
        clear: function() {
            if (confirm('Вы действительно хотите удалить все товары из корзины?')) {
                this.container.getElements('tr[name^=item]').destroy();
                new Request({url: '/basket/clear/'}).send();
                this.recalc();
            }  
        },
        
        addItem: function(args) {
            var button = $(args.element);
            var toggle = $('basketWidget').getElement('.b-basket__link');
            
            toggle.addClass('b-basket__link_loading');
            button.addClass('b-basket-button_hl');
            
            new Request.HTML({
                url: '/basket/add/?id=' + encodeURI(args.id), 
                update: this.container,
                onComplete: function() {
                    toggle.removeClass('b-basket__link_loading');
                    Site.Basket.init();
                    Site.Basket.toggle('block');
                    
                    var container = $('basketWidget').getElement('.b-basket__items__i');
                    container.scrollTo(0, container.getScrollSize().y);
                }
            }).get();
        },
        
        deleteItem: function(id) {
            new Request({url: '/basket/delete/?id=' + encodeURI(id)}).get();
            this.container.getElement('tr[name=item' + id + ']').destroy();
            this.recalc();
        },
        
        toggle: function(value) {
            var widget = $('basketWidget');
            var element = widget.getElement('.b-basket__items');
            var button = widget.getElement('.b-basket__link');
            
            if (value == undefined) {
                value = element.getStyle('display') == 'none' ? 'block' : 'none';
            } 
            
            element.setStyle('display', value);
            button.set('text', value == 'none' ? 'Корзина' : 'Свернуть корзину');
        }
    }
    
    Site.Basket.init();
    
    // раскрашиваем таблички
    $(document.body).getElements('table.catalog tr:odd').addClass('colored');
    
});

