WineInfo = new Class({
    open: false,
    current: null,
    fx: {duration:400, transition:Fx.Transitions.Quart.easeIn},
    
    initialize: function (row) {
        this.row = row;
        this.wine = this.row.getFirst('#wine');
        this.producer = this.row.getFirst('#producer');
        this.area = this.row.getNext('tr');
        this.content = this.area.getFirst('td').getFirst('div');
        this.slider = this.content.getFirst('div.slider');
        this.slider.set('tween',this.fx);
        
        this.activate();
    },
    
    activate: function () {
        [this.wine, this.producer].each(function(tab){
            if (tab.hasClass('info')) {
                tab.addEvent('click', function(e){
                    if (this.open && this.current==e.target) { this.toggle_area('close', e.target.id); this.open = false; this.current = null; }
                    else if (this.open && self.current!=e.target) { this.position_tab(e.target.id, 'slide'); this.current = e.target; }
                    else if (!this.open) { this.position_tab(e.target.id); this.toggle_area('open', e.target.id); this.open = true; this.current = e.target; }
                }.bind(this));
            }
        }.bind(this))
    },
    
    toggle_area: function(action, id) {
        if (action=='open') {
            this.area.setStyles({'display':'table-row','opacity':0});
            this.area.fade('in');
            if(id == "producer"){
                var height = this.content.getFirst('div.slider').getFirst('div.producer-info').getDimensions().y+10;                
            }else{
                var height = this.content.getFirst('div.slider').getFirst('div.wine-notes').getDimensions().y+10;                
            }

            this.content.set('tween',$merge(this.fx,{
                onComplete:function(){if(this.content.getStyle('height').toInt()==0) this.area.setStyle('display','none');}.bind(this)})
                ).tween('height',height)
                //console.log()
        } else if (action=='close') {
            this.area.fade('out');
            this.content.tween('height',0)
        }
    },
    
    position_tab: function (to, how) {

        if(to == "producer"){
            var height = this.content.getFirst('div.slider').getFirst('div.producer-info').getDimensions().y+10;                
        }else{
            var height = this.content.getFirst('div.slider').getFirst('div.wine-notes').getDimensions().y+10;                
        }

        this.content.set('tween',$merge(this.fx,{
            onComplete:function(){if(this.content.getStyle('height').toInt()==0) this.area.setStyle('display','none');}.bind(this)})
            ).tween('height',height)

        if (to=='wine') if (how=='slide') this.slider.tween('left',0); else this.slider.setStyle('left',0);
        else if (to=='producer') if (how=='slide') this.slider.tween('left',-762); else this.slider.setStyle('left',-762);
    }
});

