window.addEvent('domready', function(){
    new HeaderReplacer().replace();
    
    var cart = $('header-cart-container');
    var cartQtyContainer = $$('#header-cart-container i.cart-qty');
    var cartGoodContainer = $$('#header-cart-container i.cart-label');

    // работы с цветамми
    (function() {
        // наведение на цвет
        var colorContainers = $$('.colors');
        
        $each(colorContainers, function(cc) {
            var lis = cc.getElements('li');
            if (!lis.length) return;
            var liWidth = lis[0].getStyle('width').toInt();

            var selector = new Element('div', {
                'class': 'selector',
                styles: {
                    top: (Browser.Engine.name == 'trident') ?  ((Browser.Engine.version == 6) ? 17 : 14) : 17,
                    left: -1
                }
            }).inject(cc);
            
            var toCartLink = cc.getNext().getElement('a.buy');
            var url = toCartLink.get('href');
            
            // если мы в списке
            var images, current, inEffect = false;
            var getImage = function(id) {
                for (var i = images.length; i--;) {
                    if (images[i].get('id').match(/\d+/)[0] == id) {
                        return images[i];
                    };
                };
            };
            var fx = new Fx.Tween(null, {
                duration: 150,
                transition: Fx.Transitions.Quad.easeInOut,
                onStart: function() {
                    inEffect = true;
                },
                onComplete: function() {
                    current.setStyle('top', -172);
                    current = this.element.setStyle('zIndex', '');
                    inEffect = false;
                }
            });
            
            // если мы в просмотре товара
            var uls = [];
            var ulsLis = [];
            var currentUl = null;
            var currentLi = null;
            var bigImages = {};
            var milkboxLink = null;
            var fxi = new Fx.Tween(null, {
                duration: 250,
                transition: Fx.Transitions.Quad.easeInOut,
                onStart: function() {
                    inEffect = true;
                },
                onComplete: function() {
                    this.pelement.setStyle('top', -356);
                    this.element.setStyle('zIndex', '');
                    inEffect = false;
                }
            });
            var getUl = function(id) {
                for (var i = uls.length; i--;) {
                    if (uls[i].get('id').match(/\d+/)[0] == id) {
                        return uls[i];
                    };
                };
            };
            
            // выбираем то, какой эффект делать
            var prev = null;
            var type = ((prev = cc.getPrevious()).get('tag').toLowerCase() == 'a') ? 'list' : 'item';
            switch (type) {
                case 'list':
                    images = prev.getElements('img');
                    current = images[0];
                    break;
                case 'item':
                    milkboxLink = $$('#big-pic a[rel=milkbox]')[0];
                    uls = $$('.gallery ul');
                    currentUl = uls[0];
                    var i = 0;
                    $each(uls, function(ul) {
                        ul.store('i', i);
                        var lis = ul.getElements('li');
                        $each(lis, function(li) {
                            li.getFirst().addEvent('click', function(e) {
                                new Event(e).stop();
                                if (!li.hasClass('selected')) {
                                    milkboxLink.store('href', this.get('href'));
                                    currentLi.removeClass('selected');
                                    fxi.pelement = bigImages[currentLi.getFirst().get('rel')];
                                    currentLi = li.addClass('selected');
                                    milkboxLink.store('href', currentLi.getFirst().get('href'));
                                    fxi.element = bigImages[currentLi.getFirst().get('rel')];
                                    fxi.element.setStyle('zIndex', 101);
                                    fxi.start('top', 0);
                                };
                            });
                        });
                        ulsLis.push(lis);
                        i++;
                    });
                    currentLi = ulsLis[0][0];
                    var tmpBigImages = $('big-pic').getElements('img');
                    for (var i = tmpBigImages.length; i--;) {
                        bigImages[tmpBigImages[i].get('id')] = tmpBigImages[i];
                    };
                    break;
            };
            
            // обработка нажатия на цвета
            for (var i = 0; i < lis.length; i++) {
                (function(n) {
                    lis[i].addEvents({
                        mouseenter: function() {
                            this.setStyles({
                                cursor: 'pointer',
                                opacity: 0.5
                            });
                        },
                        mouseleave: function() {
                            this.setStyles({
                                cursor: 'pointer',
                                opacity: 1
                            });
                        },
                        click: function() {
                            if (!inEffect) {
                                switch (type) {
                                    case 'list':
                                        fx.element = getImage(this.get('id').match(/\d+/)[0]);
                                        if (fx.element == current) return;
                                        fx.element.setStyle('zIndex', 101);
                                        fx.start('top', 0);
                                        break;
                                    case 'item':
                                        var ul = getUl(this.get('id').match(/\d+/)[0]);
                                        if (ul == currentUl) return;
                                        currentUl.hide();
                                        fxi.pelement = bigImages[currentLi.getFirst().get('rel')];
                                        currentUl = ul.show();
                                        currentLi.removeClass('selected');
                                        currentLi = ulsLis[currentUl.retrieve('i')][0].addClass('selected');
                                        milkboxLink.store('href', currentLi.getFirst().get('href'));
                                        fxi.element = bigImages[currentLi.getFirst().get('rel')];
                                        fxi.element.setStyle('zIndex', 101);
                                        fxi.start('top', 0);
                                        break;
                                };

                                selector.setStyle('left', (liWidth * n) - 1);
                                toCartLink.set('href', url.replace(/id=\d+/, 'id=' + this.get('id').match(/\d+/)[0]));
                                toCartLink.twitch();
                            }
                        }
                    });
                })(i);
            };
            
            // модная крутилка в просмотре товара
            (function() {
                //console.log(currentUl, currentLi, liWidth, inEffect);
                var la = $$('#big-pic .la');
                var ra = $$('#big-pic .ra');
                
                if (!la.length) {
                    return
                };
                la = la[0];
                ra = ra[0];
                
                la.addEvent('click', function(e) {
                    var event = new Event(e);
                    event.stop();
                    
                    if (inEffect) {
                        return;
                    };
                    
                    if (uls.length == 1 && ulsLis[0].length == 1) {
                        return;
                    };
                    
                    var nextLi = currentLi.getPrevious();
                    if (nextLi) {
                        // если есть следующая фотка цвета
                    } else {
                        // если это последняя фотка цвета
                        var nextUl = currentLi.getParent('ul').getPrevious();
                        if (nextUl) {
                            currentUl.hide();
                            currentUl = nextUl.show();
                            nextLi = currentUl.getLast();
                            
                            var n = currentUl.getAllPrevious().length;
                            var colorLi = $(currentUl.get('id').replace(/gal/, 'itm'));
                            selector.setStyle('left', (liWidth * n) - 1);
                            toCartLink.set('href', url.replace(/id=\d+/, 'id=' + colorLi.get('id').match(/\d+/)[0]));
                            toCartLink.twitch();
                            // если есть следующий цвет
                        } else {
                            // если это последняя фотка последнего цвета
                            currentUl.hide();
                            currentUl = currentUl.getParent().getLast().show();
                            nextLi = currentUl.getLast();
                            
                            var n = currentUl.getAllPrevious().length;
                            var colorLi = $(currentUl.get('id').replace(/gal/, 'itm'));
                            selector.setStyle('left', (liWidth * n) - 1);
                            toCartLink.set('href', url.replace(/id=\d+/, 'id=' + colorLi.get('id').match(/\d+/)[0]));
                            toCartLink.twitch();
                        };
                    };
                    
                    milkboxLink.store('href', nextLi.getFirst().get('href'));
                    currentLi.removeClass('selected');
                    fxi.pelement = bigImages[currentLi.getFirst().get('rel')];
                    currentLi = nextLi.addClass('selected');
                    fxi.element = bigImages[currentLi.getFirst().get('rel')];
                    fxi.element.setStyle('zIndex', 101);
                    fxi.start('top', 0);
                });
                ra.addEvent('click', function(e) {
                    var event = new Event(e);
                    event.stop();
                    
                    if (inEffect) {
                        return;
                    };
                    
                    if (uls.length == 1 && ulsLis[0].length == 1) {
                        return;
                    };
                    
                    var nextLi = currentLi.getNext();
                    if (nextLi) {
                        // если есть следующая фотка цвета
                    } else {
                        // если это последняя фотка цвета
                        var nextUl = currentLi.getParent('ul').getNext();
                        if (nextUl) {
                            currentUl.hide();
                            currentUl = nextUl.show();
                            nextLi = currentUl.getFirst();
                            
                            var n = currentUl.getAllPrevious().length;
                            var colorLi = $(currentUl.get('id').replace(/gal/, 'itm'));
                            selector.setStyle('left', (liWidth * n) - 1);
                            toCartLink.set('href', url.replace(/id=\d+/, 'id=' + colorLi.get('id').match(/\d+/)[0]));
                            toCartLink.twitch();
                            // если есть следующий цвет
                        } else {
                            // если это последняя фотка последнего цвета
                            currentUl.hide();
                            currentUl = currentUl.getParent().getFirst().show();
                            nextLi = currentUl.getFirst();
                            
                            var n = currentUl.getAllPrevious().length;
                            var colorLi = $(currentUl.get('id').replace(/gal/, 'itm'));
                            selector.setStyle('left', (liWidth * n) - 1);
                            toCartLink.set('href', url.replace(/id=\d+/, 'id=' + colorLi.get('id').match(/\d+/)[0]));
                            toCartLink.twitch();
                        };
                    };
                    
                    milkboxLink.store('href', nextLi.getFirst().get('href'));
                    currentLi.removeClass('selected');
                    fxi.pelement = bigImages[currentLi.getFirst().get('rel')];
                    currentLi = nextLi.addClass('selected');
                    fxi.element = bigImages[currentLi.getFirst().get('rel')];
                    fxi.element.setStyle('zIndex', 101);
                    fxi.start('top', 0);
                });
            })();
            
            var addRequestSent = false;
            // обработка добавления в корзину
            toCartLink.addEvent('click', function(e) {
                new Event(e).stop();
                if (addRequestSent) return;
                
                new Request.JSON({
                    url: this.get('href'),
                    onRequest: function() {
                        addRequestSent = true;
                        toCartLink.getFirst().set({
                            src: '/images/ajax.gif',
                            styles: {
                                left: 10,
                                top: 7
                            }
                        });
                    },
                    onSuccess: function(responseJSON) {
                        if (responseJSON.success) {
                            
                            // total_qty — кол-во товаров в корзине
                            var tq = responseJSON.data.total_qty.toInt();
                            if (tq == 1) {
                                cart.getFirst().set('html', 'У вас <i class="cart-qty"></i>&nbsp;<i class="cart-label"></i>');
                                cartQtyContainer = $$('#header-cart-container i.cart-qty');
                                cartGoodContainer = $$('#header-cart-container i.cart-label');
                            };
                            cartQtyContainer.set('text', tq);
                            cartGoodContainer.set('text', 'товар'.decline(tq, 'ов', 'ов', '', 'ов', 'а'));
                            cart.getFirst().highlight('#f00', '#292525');
                            
                            
                            toCartLink.set({
                                text: 'добавлен!',
                                styles: {
                                    textDecoration: 'none',
                                    cursor: 'default'
                                }
                            }).highlight('#f00', '#292525');
                            (function() {
                                toCartLink.set({
                                    html: '<img src="/images/buy-button.png" />в корзину',
                                    styles: {
                                        left: 0,
                                        top: 0,
                                        textDecoration: '',
                                        cursor: ''
                                    }
                                });
                                addRequestSent = false;
                            }).delay(2000);
                        } else {
                            toCartLink.set({
                                text: 'не добавлен!',
                                styles: {
                                    textDecoration: 'none',
                                    cursor: 'default',
                                    color: 'red'
                                }
                            }).highlight('#f00', '#292525');
                            (function() {
                                toCartLink.set({
                                    html: '<img src="/images/buy-button.png" />в корзину',
                                    styles: {
                                        left: 0,
                                        top: 0,
                                        textDecoration: '',
                                        cursor: '',
                                        color: ''
                                    }
                                });
                                addRequestSent = false;
                            }).delay(2000);
                        };
                    }
                }).send();
            });
        });
    })();
});

