document.observe('dom:loaded', function () {
    $$('.filter_cat').each(function(fil) {
        fil.observe('change', function (ev) {
            var el = ev.element();
            if(el.next()) {
                el.next().remove();
            }
            var table = el.up().next('table');
            var cat = el.getValue();
            restoreTable(table);
            if(cat) {
                var team = [];
                table.select('td:nth-child(3)').each(function (td) {
                    if(td.childNodes[0].nodeValue != cat) {
                        td.up('tr').hide();
                    } else {
                        var n = td.next(1).childNodes[0].nodeValue;
                        if(n.indexOf('Niederwil') != -1 || n.indexOf('Reuss') != -1) {
                            team.push(n);
                        } else {
                            team.push(td.next(2).childNodes[0].nodeValue);
                        }
                    }
                });
                var teams = team.uniq();
                if(teams[1]) {
                    var selection = new Element('select');
                    var tableCopy = table.clone(true);
                    var all = new Element('option', { value: ''}).update('Alle');
                    selection.insert(all);
                    teams.each(function (t) {
                        var opt = new Element('option').update(t);
                        selection.insert(opt);
                    });
                    var teamfilter = new Element('span');
                    teamfilter.update(' Team ');
                    teamfilter.insert(selection);
                    el.up().insert(teamfilter);
                    selection.observe('change', function (ev){
                        var tFil = ev.element();
                        var tVal = tFil.getValue();
                        restoreTable(table);
                        table.select('td:nth-child(3)').each(function (td) {
                            if(td.childNodes[0].nodeValue != cat) {
                                td.up('tr').hide();
                            }
                        });
                        oddify(table);
                        if(tVal) {
                            table.select('td:nth-child(5)').each(function (td) {
                                var n = td.childNodes[0].nodeValue;
                                var n2 = td.next().childNodes[0].nodeValue;
                                var hide = true;
                                if(n.indexOf(tVal) != -1) {
                                    hide = false;
                                }
                                if (n2.indexOf(tVal) != -1) {
                                    hide = false;
                                }
                                if(hide) {
                                    td.up('tr').hide();
                                }
                            });
                            oddify(table);
                        }
                        
                    });
                }
                oddify(table);
            }
            
        });
    });
});

function restoreTable (table) {
    table.select('tr').invoke('show');
    oddify(table);
}
function oddify (table) {
    var name = 'odd';
    table.select('tr').each(function (tr) {
        tr.className = '';
        if(tr.style.display != 'none') {
            tr.className = name;
            name = (name == 'odd') ? 'even' : 'odd';
        }
    });
}
