function tabs_select(container, tab) {
    if(tab.retrieve('for') == null) console.log(tab);
    var target = $(tab.retrieve('for'));
    container.getElements('.tab-list > .tab').removeClass('selected');
    container.getElements('.tab-page').removeClass('selected').tween('opacity', 0.0);
    tab.addClass('selected');
    target.addClass('selected').tween('opacity', 1.0);
}

function tabs_advance() {
    var tabs = this.getElements('.tab-list > .tab');
    var new_tab = (this.retrieve('current-tab') + 1) % tabs.length;
    this.store('current-tab', new_tab);
    tabs_select(this, tabs[new_tab]);
}

function tabs_play(container) {
    $clear(container.retrieve('tabber'));
    container.store('tabber', tabs_advance.periodical(10000, container));
}

function tabs_pause(container) {
    $clear(container.retrieve('tabber'));
}

function tabs_click(container, tab) {
    tabs_pause(container);
    tabs_select(container, tab);
}

function tabs_setup() {
    $$('.tab-container').each(function(container) {
        var first = true;
        var max_x = 0;
        var max_y = 0;

        container.getElements('.tab-list > label.tab').each(function(tab) {
            tab.removeClass('tab');
            var wrapper = new Element('span', {'class': 'tab'});
            wrapper.store('for', tab.getProperty('for'));
            wrapper.wraps(tab);
            wrapper.addEvent('click', function() {tabs_click(container, wrapper);});
            wrapper.setStyle('cursor', 'pointer');
            tab.setStyle('cursor', 'pointer');

            if(first || tab.getProperty('initial') == 'true') {
                tabs_select(container, wrapper);
            }
            first = false;
        });

        container.getElements('.tab-page').each(function(page) {
            size = page.getSize();
            if(size.x > max_x) max_x = size.x;
            if(size.y > max_y) max_y = size.y;
            page.addClass('tab-page-activated');
        });

        container.setStyle('width', max_x);
        container.setStyle('height', max_y + 32);
        container.getElements('.tab-page').setStyle('width', max_x - 5).setStyle('height', max_y);

        container.store('current-tab', 0);

        if(container.getProperty('cycle') == 'true') {
            tabs_play(container);
        }

        if(container.getProperty('buttons') == 'true') {
            button_container = new Element('div', {'class': 'tab-buttons'});
            container.grab(button_container, 'top');
            play_button = new Element('img', {'src': '/static/image/play_button.png', 'class': 'tab-button'});
            button_container.grab(play_button);
            pause_button = new Element('img', {'src': '/static/image/pause_button.png', 'class': 'tab-button'});
            button_container.grab(pause_button);

            play_button.addEvent('click', function() { tabs_play(container); });
            pause_button.addEvent('click', function() { tabs_pause(container); });
        }
    });
}

//window.addEvent('domready', tabs_setup);
window.addEvent('load', tabs_setup);