/**
* Декорирование таблиц с данными + добавление сортировки + доп. обработка таблиц с checkable строками
*
* @param {jQuery} jRoot корневые jQuery объекты, в которых будет осуществляться поиск table.tablesorter:not(.decorated)
* @returns {Number} count >= 0 количество продекорированных таблиц
*/
function decor_tables(jRoot) {
var jTables = jRoot.find('table.tablesorter:not(.decorated)'),
jTablesHeaders = jTables.find('thead th:not([colspan])'),
ts_initData = {};
if ( arguments.length > 1 ) ts_initData.sortList = arguments[1];
jTablesHeaders.prepend('
');
jTables.find('thead')
.find('tr:first th:first').addClass('first-child')
.prepend('')
.end().find('tr th:last-child').addClass('last-child').first()
.prepend('');
jTables.find('td:last-child').addClass('last-child');
jTables.each( function () {
var jTable = $(this),
jTFoot = jTable.children('tfoot');
if ( !jTFoot.length ) jTFoot = $('').appendTo(jTable);
var jRow = $('
').appendTo(jTFoot);
$(' | ').appendTo(jRow)
.append('');
} )
.addClass('decorated')
.tablesorter(ts_initData);
jTables.filter('.checkable').tablesorter({headers: { 0: { sorter: false}}})
.find('thead th.first-child').removeClass('header')
.find('.bullet-wrapper').remove();
return jTables.length;
}
$('table.checkable thead th:first input:checkbox').live('change', function () {
var jThis = $(this),
jTable = jThis.closest('table.checkable'),
jCheckboxes = jTable.find('tbody input:checkbox');
jCheckboxes.prop('checked', jThis.prop('checked'));
refresh_states(jTable);
} );
$('table.checkable tbody td:first-child input:checkbox').live('change', function () {
var jTable = $(this).closest('table.checkable');
jTable.find('input:checkbox#select_all').prop('checked', jTable.find('tbody input:checkbox:not(:checked)').length === 0);
refresh_states(jTable);
} );
$( function () {
if ( $.tablesorter ) {
$.tablesorter.defaults.widgets = ['zebra'];
}
//decor_tables($('body'));
} );