(function($){
	$.fn.checkgroup = function(options){
		//merge settings
		settings=$.extend({
			groupSelector:null,
			groupName:'group_name',
			enabledOnly:false
		},options || {});
		
		var ctrl_box=this;

		
		//allow a group selector override option
		var grp_slctr = (settings.groupSelector==null) ? 'input[name='+settings.groupName+']' : settings.groupSelector;
		
		//grab only enabled checkboxes if required
		if(settings.enabledOnly)
		{
			grp_slctr += ':enabled';
		}

		//attach click event to the "check all" checkbox(s)
		ctrl_box.click(function(e){
			chk_val=(e.target.checked);
			$(grp_slctr).attr('checked',chk_val);
			//if there are other "select all" boxes, sync them
			ctrl_box.attr('checked',chk_val);
		});
		//attach click event to checkboxes in the "group"
		$(grp_slctr).click(function(){
			if(!this.checked)
			{
				ctrl_box.attr('checked',false);
			}
			else
			{
				//if # of chkbxes is equal to # of chkbxes that are checked
				if($(grp_slctr).size()==$(grp_slctr+':checked').size()){
					ctrl_box.attr('checked','checked');
				}
			}
		});
		//make this function chainable within jquery
		return this;
	};						
})(jQuery);	
