

/*
<div class="group"><input type="checkbox" name="group[]" value="Data" /><div class="group-label">Label</div></div>
<div class="group group-selected"><input type="checkbox" name="group[]" value="Data" checked="checked"/><div class="group-label">Label</div></div>
<div id="group-selectall" class=""><div class="group-label">Select All</div></div>
*/
function checkbox_select(e,group,forced){
 var forced = typeof(forced)=='undefined' ? null : forced ;
 var i = jQuery('input',e).get(0);
 if( jQuery(e).toggleClass(group+'-selected',forced).hasClass(group+'-selected') ){ i.setAttribute('checked','checked'); i.checked = true; }
 else{ i.checked = false; i.removeAttribute('checked'); }
 jQuery('#'+group+'-selectall').toggleClass(group+'-selected',(jQuery('.'+group+' input:not(:checked)').size()==0));
 jQuery('#'+group+'-clearall').toggleClass(group+'selected',(jQuery('.'+group+' input:checked').size()==0));
 }
/*
<input type="hidden" name="group" value="" id="group" />
<div class="group"><div class="group-label">Label/Data</div></div>
<div class="group group-selected"><div class="group-label">Label</div><div class="group-data">Data</div></div>
*/
function radiobtn_select(e,group){
 jQuery('.'+group).removeClass(group+'-selected');
 jQuery(e).addClass(group+'-selected');
 jQuery('#'+group).val(jQuery('.'+group+'-data',e).html());
 }

var checkbox_selectall = function(group){ jQuery('.'+group).trigger('click',[(jQuery('.'+group+' input:not(:checked)').size()!=0)]); }
var checkbox_clearall = function(group){ jQuery('.'+group).trigger('click',[false]); }
var checkbox_invert = function(group){ jQuery('.'+group).trigger('click'); }

var checkbox_ify = function(className){
 jQuery('.'+className).bind('click',function(event,bool){ checkbox_select(this,className,bool); });
 jQuery('#'+className+'-selectall').bind('click',function(event,bool){ checkbox_selectall(className); });
 jQuery('#'+className+'-clearall').bind('click',function(event,bool){ checkbox_clearall(className); });
 jQuery('#'+className+'-invert').bind('click',function(event,bool){ checkbox_invert(className); });
 }
var radiobtn_ify = function(className){ jQuery('.'+className).bind('click',function(event){ radiobtn_select(this,className); }); }

