/**
* Function that enables an element by form and element name
*
* @param string formName
* @param string formElemName
* @return void
*/
function enableFormElementByName(formName, formElemName)
{
  var formElem = null;

  if (document && document.forms[formName] && document.forms[formName][formElemName])
  {
    formElem = document.forms[formName][formElemName];

    formElem.disabled = false;
    return true;
  }

  return false;
}

/**
* Function that disables an element by form and element name
*
* @param string formName
* @param string formElemName
* @return void
*/
function disableFormElementByName(formName, formElemName)
{
  var formElem = null;

  if (document && document.forms[formName] && document.forms[formName][formElemName])
  {
    formElem = document.forms[formName][formElemName];

    formElem.disabled = true;
    return true;
  }

  return false;
}

/**
* Function that clears all the values in a form element by element name
*
* @param string formName
* @param string formElemName
* @return void
*/
function clearFormElementValuesByName(formName, formElemName)
{
  var formElem = null;

  if (document && document.forms[formName] && document.forms[formName][formElemName])
  {
    formElem = document.forms[formName][formElemName];

    switch (formElem.type)
    {
      case 'text':

        formElem.value = '';

      break;

      case 'select-one':

        var numOptions = formElem.length;

        // Clear elements first, clearing needs to be done from end to first because it is reindexed on removal
        for (i = numOptions - 1; i >= 0; i--)
        {
          formElem.remove(i);
        }

      break;
    }

    return true;
  }

  return false;
}

/**
* Function that sets the values in a form element by element name
*
* @param string formName
* @param string formElemName
* @return void
*/
function setFormElementValuesByName(formName, formElemName, formValues)
{
  var formElem = null;

  if (document && document.forms[formName] && document.forms[formName][formElemName])
  {
    formElem = document.forms[formName][formElemName];

    switch (formElem.type)
    {
      case 'text':

        formElem.value = formValues;

      break;

      case 'select-one':

        if (formValues && typeof(formValues) == 'object')
        {
          for (var key in formValues)
          {
            var option = new Option(formValues[key], key);

            try
            {
              formElem.add(option, null); // standards compliant; doesn't work in IE
            }
            catch(ex)
            {
              formElem.add(option); // IE only
            }
          }
        }

      break;
    }

    return true;
  }

  return false;
}
