
/***
 (C)Scripterlatve.com

 Info: www.scripterlative.com?radbtn

 These instructions may be removed but not the above text.

 Please notify any suspected errors in this text or code, however minor.
 
Installation
~~~~~~~~~~~~
Save this text/file as 'radbtn.js'.
In any document that uses the script, add the following in the <HEAD> section:

<SCRIPT type='text/javascript' src='radbtn.js'></SCRIPT>

Configuration
~~~~~~~~~~~~~
None.

Usage
~~~~~

Please not that all these functions can be used equally with single or grouped checkbox elements.

RadBtn.functionName(parameters);

Meaning of Parameters Used
~~~~~~~~~~~~~~~~~~~~~~~~~~
rb      - An absolute reference to a single radio button, e.g document.forms.myForm.radioGroup[2].
rbSet   - An absolute reference to a set of radio buttons, e.g document.forms.myForm.radioGroup.
rbValue - The value to be assigned to a radio button.
idx     - The 0-based index of a button in a set.
flag    - A boolean value: true/false.

GratuityWare
~~~~~~~~~~~~
This code is free, however if you wish to make a donation to encourage further development of
scripts, you may do so at www.scripterlative.com.

*** DO NOT EDIT BELOW THIS LINE **/

var RadBtn=/*2843295374657068656E204368616C6D657273*/
{
 enable:function(rbSet, idx, flag)   /* Enable/disable button idx in rbSet. true flag==enable */
 {
  if(rbSet.length)
   rbSet[idx].disabled=!flag   
  else
   rbSet.disabled=!flag;
 },

 enableAll:function(rbSet, flag) /* Enable/disable all buttons in rbSet. true flag==enable */
 {
  if(!rbSet.length)
   rbSet.disabled=!flag;
  else 
   for(var i=0; i<rbSet.length; i++)
    rbSet[i].disabled=!flag; 
 },
 
 toggle:function(rb)  /* Toggle enabled status of button rb */
 {
  rb.disabled^=true;
 },
 
 toggleAll:function(rbSet)
 {
  if(!rbSet.length)
   rbSet.disabled=!flag;
  else 
   for(var i=0; i<rbSet.length; i++)
    rbSet[i].disabled^=true;
 },

 select:function( rbSet, idx )   /* Select button idx in rbSet */
 {
  if(!rbSet.length)
   rbSet.checked=true;
  else
   if(rbSet.length > idx) 
    rbSet[idx].checked=true;
 },

 deselect:function( rbSet ) /* Deselect rbSet */
 {
  if(!rbSet.length)
   rbSet.checked=false;
  else
   for(var i=0; i<rbSet.length; i++)
    rbSet[i].checked=false; 
 },

 selectByValue:function( rbSet, rbValue )  /* Select a button in rbSet by value */
 {               
  var setOK=false; 
   
  if(rbSet.length)
  {
   for(var i=0; i<rbSet.length && rbSet[i].value!=rbValue ; i++)
   ;
   if(i!=rbSet.length)
   {
    rbSet[i].checked=true;
    setOK=true;
   } 
  } 
  else
   if(rbSet.value==rbValue) //single button
   {
    rbSet.checked=true;  
    setOK=true;
   }
    
  return setOK;   
 },

 getValue:function(rbSet) /* Retrieve the value of the selected button in rbSet; Returns "" if none */
 {
  if(rbSet.length)  
   for(var i=0; i<rbSet.length && !rbSet[i].checked; i++)
   ;
 
  return rbSet.length?((i==rbSet.length) ? "" : rbSet[i].value):rbSet.checked?rbSet.value:""; 
 },

 getIndex:function(rbSet) /* Get the index of the selected button in rbSet, or -1 */
 {
  if(rbSet.length)  
   for(var i=0; i<rbSet.length && !rbSet[i].checked; i++)
   ;
 
  return rbSet.length ? ((i==rbSet.length) ? -1 : i) : rbSet.checked ? 0 : -1; 
 }

} // end object

