var CheckboxPlus = Class.create();

Object.extend(CheckboxPlus, {
  applyCheckboxBehaviors: function() {
    $$('.cbp-container').each(function(el) {
      el.cb = el.down('input.checkbox');
      el.cb.container = el;
      if (el.cb) {
        Event.observe(el, "click", CheckboxPlus.containerSelect);
        Event.observe(el.cb, "click", CheckboxPlus.checkboxSelect);
      }
      el.removeClassName('cbp-container');
    });
  },

  containerSelect: function(ev) {
    cb = $(this).cb;
    if (!cb.disabled) cb.checked = !cb.checked;
    if (cb.checked) 
      $(this).addClassName('selected'); 
    else 
      $(this).removeClassName('selected'); 
  },
  
  checkboxSelect: function(ev) {
  	if (!ev) var ev = window.event;
  	ev.cancelBubble = true;
  	if (ev.stopPropagation) ev.stopPropagation();
    
    container = $(this).container;
    if ($(this).disabled) return;
    if ($(this).checked)
      container.addClassName('selected'); 
    else 
      container.removeClassName('selected');
  }
});
