/* ---  
  Description:  Assign background color to containing element around a group of given elements
  Requires:     JEventUtil.js,JPageElementBase.js,JControllerBase.js,JInteractionUtil.js
  Use:          To cache object references add attribute value pairs to elements in markup. 
                Containing elememts get " cache='container' ",
                form elements in containers get " cache='input' ".
                
                To associate form elements with a given container add " observedby='container' "            
---*/

function JSectionHighliteUtil(){};


/**
*Initialize
*/

JSectionHighliteUtil.init = function(_ContainerCache,_ElementCache,_highliteClassName){
  
  /* -- Add events and handlers to a dispatcher object -- */
  oHighliteController = new JControllerBase();
  oHighliteController.addEventType('focus',focusHandler);

  /* -- Assign focus event handler to a group of cached elements-- */

  for(var _elem in _ElementCache.elements){
    JEventUtil.addEvent(_ElementCache.elements[_elem],'focus',function(e){oHighliteController.exec('focus',e,{inputs:_ElementCache,containers:_ContainerCache,highlite:_highliteClassName})},false);

    //safari bug in windows v3.0 - 522.11.3
    //radio button do not get 'focus' event when being selected. they do get 'click' event
    //but this introduces another bug in which it will highlight the container even when when click on on white space
    //alert(_ElementCache.elements[_elem].type);  

    if (_ElementCache.elements[_elem].type == 'radio') {
      JEventUtil.addEvent(_ElementCache.elements[_elem], 'click',
                          function(e){
                            oHighliteController.exec('focus',e,{inputs:_ElementCache,containers:_ContainerCache,highlite:_highliteClassName})
                          },
                          false);
    }
  }
}

/**
*Event Handlers
* note: some of the below may belong in the controller which should manage the interface between 
* handler function (View) and the element cache (Model)
*/


//Handle input focus events
function focusHandler(_evt,_type,_args){
  //alert(_evt)
  var _target = JEventUtil.getTarget(_evt);
  var _container_obs = _args.inputs.getObservers(_target.id,_type);
  //alert(_container_obs.toSource())
  var _r = false;
  //try{
    _args.containers.walk(dimSection);
    for(var i=0;i<_container_obs.length;i++){
      JInteractionUtil.addClassName(_container_obs[i].obs,_args.highlite);
    }
  //}catch(e){}

}

/**
*Presentation
*/

//Dim all sections
function dimSection(_node){
  JInteractionUtil.removeClassName(_node,'containerHighlite');
}

