$(document).ready(function(){
    $(".Trigger", $(".Collapser")).click(function() {
        var collapser = $(this).closest(".Collapser");
        $(".Animated", collapser).each(
            function() {
                if (this.tagName == 'TR') {
                    $(this).toggleClass("Hidden");
                    SetTriggerButtonClass(collapser, this);
                    SetTriggerLinkDisplay(collapser, this);
                } else {
                    $(this).slideToggle("fast", function() {
                        SetTriggerButtonClass(collapser, this);
                        SetTriggerLinkDisplay(collapser, this);
                    });
                }
            });
        return false;
    });

    $(".Animated", $(".Collapser")).each(function() {
        var collapser = $(this).closest(".Collapser");
        SetTriggerButtonClass(collapser, this);
        SetTriggerLinkDisplay(collapser, this);
    });

});

function SetTriggerButtonClass(collapser, content) {
    var isHidden = $(content).is(':hidden');
    $(".Trigger", collapser).filter(".Button").each(function() {
        $(this).removeClass(isHidden ? "Collapse" : "Expand");
        $(this).addClass(isHidden ? "Expand" : "Collapse");
    });
}

function SetTriggerLinkDisplay(collapser, content) {
    var isHidden = $(content).is(':hidden');

    if (content.tagName == 'TR') {
        $(content).css('display') == 'none' ? isHidden = true : isHidden = false;
    }

    var toShow = isHidden ? ".Expanded" : ".Collapsed";
    var toHide = isHidden ? ".Collapsed" : ".Expanded";
    $(".Trigger", collapser).not(".Button").each(function() {
        $(this).filter(toShow).show();
        $(this).filter(toHide).hide();
    });
}
