(function($) {

/*
 * Update a table or build from scratch from a model data.
 * Will allways at least remove and rebuild tbody children
 */ 
$.fn.buildtable = function(data,options) {
        options = $.extend($.fn.buildtable.defaults,options);

        var $tbody; //find tbody
        if (this.is('table')) {
            $tbody = this.find('tbody');
            if ($tbody.length == 0) {
                $tbody = $('<tbody></tbody>').appendTo(this);
            }
            $tbody.empty();
        } else if (this.is('tbody')) {
            $tbody = this;
            $tbody.empty();
        } else {
            $tbody = $('<table><tbody></tbody></table>').appendTo(this).children('tbody'); 
        }
        
        var row = '';
        var row_data;
        for (var i=0;i<data.length; i++) {
            if (options.row_filter) {
                row_data = options.row_filter(data[i]);
                if (row_data == null) {
                    continue;
                }
            } else {
                row_data = data[i];
            }
            row += '<tr>';
            for (var j=0; j<row_data.length; j++) {
                row += '<td>'+row_data[j]+'</td>\n';
            }
            row += '</tr>\n';
        }
        $tbody.append(row);
        return this;
}

$.fn.buildtable.defaults = {
    row_filter: null
}

})(jQuery)
