jQuery используется в проекте
вот накидал говнокод, пример работы
http://pastehtml.com/view/buq9co1p5.html
(function($) {
$.fn.checkbox = function(options){
var defaults = {
parent: '',
main: '',
sub: '',
c: 0
};
var opts = $.extend(defaults, options);
var total = $(opts.parent).find("input[type=\"checkbox\"][name=\""+opts.sub+"\"]").length;
$(options.parent + ' tr')
.filter(':has(:checkbox:checked)')
.addClass('selected')
.end()
.click(function(event) {
$(this).toggleClass('selected');
if (event.target.type !== 'checkbox') {
var check = $(':checkbox', this);
check.attr('checked', function() {
return !this.checked;
});
if(check.is(':checked')) opts.c++;
else opts.c--;
if(opts.c == total) $(opts.main).attr('checked', true);
else $(opts.main).attr('checked', false);
}
});
$(options.main).click(function(){
$(opts.parent).find("input[type=\"checkbox\"][name=\""+opts.sub+"\"]").each(function(){
// инвертирует выделение
//$(this).attr('checked',!$(this).attr('checked'));
//$(this).parents().toggleClass('selected');
//$(this).parent().toggleClass('selected');
// выделяет все, или снимает выделение со всех
if($(opts.main).attr('checked')) {
$(this)
.attr('checked', 'checked')
.closest('tr')
.addClass('selected');
opts.c++;
} else {
$(this)
.attr('checked', false)
.closest('tr')
.removeClass('selected');
opts.c--;
}
});
});
$(opts.parent + " input[name='"+opts.sub+"']").bind('click', function(){
if($(this).is(':checked')) opts.c++;
else opts.c--;
if(opts.c == total) $(opts.main).attr('checked', true);
else $(opts.main).attr('checked', false);
});
};
})(jQuery);
$(document).ready(function() {
$('.table').checkbox({
parent: '.table',
main: '#checkall',
sub: 'check[]'
});
});