// radio control functions

// generates and returns the HTML code for the control
function radioControlGenerageHtml( formId, controlDescription )
{
  var output = "";
  
  if ( controlDescription['caption'] )
    output += controlDescription['caption'];
    
  if ( controlDescription['items'].length > 0 )
    for ( var item in controlDescription['items'] )
    {
      var internalControlId = radioControlGetInternalControlId( formId, controlDescription, item );
      output += "<div id=\""+getInternalControlId( formId, controlDescription )+"\" class=\"radioinput\"><label for=\""+internalControlId+"\"><input onchange=\"javascript: saveControlValue('"+formId+"', '"+controlDescription['id']+"', '"+controlDescription['items'][item]['value']+"');\" checked=\"false\" name=\""+controlDescription['id']+"\" id=\""+internalControlId+"\" type=\"radio\" />&nbsp;"+controlDescription['items'][item]['caption']+"</label></div>";
    };
    
  return output;
}

// returns the control ID. Is designed to be used internally only
function radioControlGetInternalControlId( formId, controlDescription, itemIndex )
{
  return getInternalControlId( formId, controlDescription ) + itemIndex;
}

// Sets the properties of the control to the ones, set in control description
function radioControlPopulateProperties( formId, controlDescription )
{
  if ( controlDescription['items'].length > 0 )
    for ( var item in controlDescription['items'] )
    {
      var control = obtainElementById( radioControlGetInternalControlId( formId, controlDescription, item ) );
      if ( control )
        control.checked = 
          controlDescription['items'][item]['value'] == controlDescription['value'];
    };
}

//   Adds the new text control description to the form, given
// and returns updated form
//   itemsValues is an array of values for radios and
//   itemsCaptions is the 0-base array with the same numeric
// indexes with radios labels texts. The order is important,
//   The form must be a valid form
//   If there already is a control with ID, given, it will be replaced
// with new
function radioControlAddToForm( id, defaultValue, caption, itemsValues, itemsCaptions )
{
  this.addBaseControl( id, defaultValue );
  
  this['fields'][id]['type'] = 'radio';
  this['fields'][id]['caption'] = caption;
  this['fields'][id]['items'] = new Array();

  for ( var item = 0; item < itemsValues.length; item++ )
  {
    this['fields'][id]['items'][item] = new Array();
    this['fields'][id]['items'][item]['value'] = itemsValues[item];
    this['fields'][id]['items'][item]['caption'] = itemsCaptions[item];
  };
}
