$(function(){
    $('table[matrix]').each(function(num){
        var t = this;
        $('td.answer', this).click(function(evt){
            var rb = $('input', this)[0];
            rb.click();
        });
        $('td.answer input', this).click(function(evt){
            evt.stopPropagation();
        });
        if ($(this).attr('fr') == 'y') {
            $('input', this).click(function(w){
                makeOnlySelectedAnswer(this, t);
            });
        }
    });
    // rb = radio button
    // t = table (ancestor)
    var makeOnlySelectedAnswer = function(rb, t) {
        var val = rb.value;
        $('input[value='+val+']', t).each(function(){
            this.checked = this == rb;
        });
    };
    // find text areas with a maxlength attribute and provide countdown for number left
    $('textarea[maxlength]').each(function(){
        var span = $(this).next('span');
        var max = $(this).attr('maxlength');
        span.text(max - this.value.length);
        $(this).bind('keyup', function(e){
            span.text(max - e.target.value.length);
        });
    });
});
