// element.getDimensions({computeSize: true}) from Mootools More
window.addEvent('domready', function() {
    var next_id = 0;

    function create_tab_container(container) {
        var outer = new Element('div', {'class': 'tab-area'});
        var button_area = new Element('div', {'class': 'tab-bar'});

        outer.wraps(container);
        outer.grab(button_area, 'top');

        container.store('button-area', button_area);

        return button_area;
    }

    function create_tab_wrapper(container, source) {
        var title = source.getProperty('title');
        var button = new Element('span', {'class': 'tab-button', 'text': title});
        var display = new Element('div', {'class': 'tab-display'});
        var bar = container.retrieve('button-area');

        button.addEvent('click', function() {
            bar.getChildren('span.tab-button').removeClass('selected');
            container.getChildren('div.tab-display').removeClass('selected');
            display.addClass('selected');
            button.addClass('selected');
        });

        bar.grab(button);

        display.wraps(source);

        return display;
    }

    function create_form_tab(container, source) {
        var display = create_tab_wrapper(container, source);
        var target = source.getProperty('target');

        if($defined(target) && target != '_self') {
            return;
        }

        var output = display;

        if(source.hasClass('before')) {
            output = new Element('div', {'class': 'tab-result'});
            display.grab(output, 'top');
        }
        else if(source.hasClass('after')) {
            output = new Element('div', {'class': 'tab-result'});
            display.grab(output, 'bottom');
        }

        source.addEvent('submit', function(event) {
            event.stop();
            var req = new Form.Request(source, output);
            req.send();
        });
    }

    function create_embed_tab(container, source) {
        var display = create_tab_wrapper(container, source);
        var req = new Request.HTML({url: source.getProperty('href'), method: 'get', update: display});
        req.send();
    }

    function create_generic_tab(container, source) {
        create_tab_wrapper(container, source);
    }

    try {
        $$('div.tab-container').each(function(container) {
            var bar = create_tab_container(container);

            container.getChildren().each(function(source) {
                if(source == bar) return;

                var type = source.get('tag');

                if(type == 'form') {
                    create_form_tab(container, source);
                }
                else if(type == 'a') {
                    create_embed_tab(container, source);
                }
                else {
                    create_generic_tab(container, source);
                }
            });

            bar.getFirst('span.tab-button').addClass('selected');
            container.getFirst('div.tab-display').addClass('selected');
        });
    }
    catch(x) {}
});
