Type.registerNamespace('Bonasource');
//++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++Bonasource.CheckBoxListSwitcher++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++    
Bonasource.CheckBoxListSwitcher = function(element)
{
  Bonasource.CheckBoxListSwitcher.initializeBase(this, [element]);
  //+++++++++++++++++++Private+Fields+++++++++++++++
  var _checkBoxes = null;
  var _labels = null;
  var _checkBoxClickDelegate = null;
  //+++++++++++++++++++Private+Fields+End+++++++++++  
  
  //+++++++++++++++++++Constants++++++++++++++++++++
  var _checkBoxClickHandlerName = 'checkBoxClick';
  //+++++++++++++++++++Constants+End++++++++++++++++
  
  //+++++++++++++++++++Public+methods+++++++++++++++
  
  //+++++++++++++++++++Event handlers+++++++++++++++  
  this.add_checkBoxClick = function (func)
  {
    this.get_events().addHandler(_checkBoxClickHandlerName, func);
  };
  this.remove_checkBoxClick = function (func)
  {
    this.get_events().removeHandler(_checkBoxClickHandlerName, func);
  };
  //+++++++++++++++++++Event handlers+end+++++++++++    
  
  this.initialize = function()
  {
    Bonasource.CheckBoxListSwitcher.callBaseMethod(this, 'initialize');
    var element = this.get_element();
        
    if (!_checkBoxes)
    {
      _checkBoxes = element.getElementsByTagName('input');
    }
    
    if (!_checkBoxClickDelegate)
    {
      _checkBoxClickDelegate = Function.createDelegate(this, checkBox_OnClick);
      var length = _checkBoxes.length;
      
      for (var i = 0; i < length; i++)
      {
        $addHandler(_checkBoxes[i], 'click', _checkBoxClickDelegate);
        
        if (_checkBoxes[i].checked)
        {
          invokeCheckBoxClick(this, _checkBoxes[i]);
        }
      }
    }
  };
  this.dispose = function()
  {
    if (_checkBoxClickDelegate)
    {
      var length = _checkBoxes.length;
      
      for (var i = 0; i < length; i++)
      {
        $removeHandler(_checkBoxes[i], 'click', _checkBoxClickDelegate);
      }
      
      _checkBoxClickDelegate = null;
    }
    
    if (_checkBoxes)
    {
      _checkBoxes = null;
    }
    Bonasource.CheckBoxListSwitcher.callBaseMethod(this, 'dispose');  
  }
  //+++++++++++++++++++Public+methods+end+++++++++++ 
  function checkBox_OnClick(evt)
  {
    invokeCheckBoxClick(this, evt.target);
  }
  function invokeCheckBoxClick(pThis, target)
  {
    var handler = pThis.get_events().getHandler(_checkBoxClickHandlerName);
    
    if (handler)
    {
        handler(pThis, {target:target});
    }
  }
}
Bonasource.CheckBoxListSwitcher.prototype = // MS AJAX inheritance support
{
  add_checkBoxClick:this.add_checkBoxClick,
  remove_checkBoxClick:this.remove_checkBoxClick,
  initialize:this.initalize,
  dispose:this.dispose
}
Bonasource.CheckBoxListSwitcher.registerClass('Bonasource.CheckBoxListSwitcher', Sys.UI.Control);
if (typeof(Sys) !== 'undefined')
{
  Sys.Application.notifyScriptLoaded();
}
