function getForm(formName)
{
  if (formName == undefined)
    formName = "form";

  var theForm = document.getElementById(formName);

  if (theForm == undefined)
    theForm = document.getElementsByName(formName)[0];

  return theForm;
}

function getFormField(fieldName, formName)
{
  var theForm = getForm(formName);

  if (theForm != undefined)
    return theForm[fieldName];
}

function getFormValue(fieldName, defaultValue, formName)
{
  var field = getFormField(fieldName, formName);

  if (field != undefined)
    return field.value;

  return defaultValue;
}

function getFormIntValue(fieldName, defaultValue, formName)
{
  var field = getFormField(fieldName, formName);

  var intValue = defaultValue;

  if (field != undefined)
    intValue = parseInt(field.value);
  else
    return defaultValue;

  if (intValue == NaN)
    return defaultValue;

  return intValue;
}

function setFormValue(fieldName, value, formName)
{
  var field = getFormField(fieldName, formName);

  if (field != undefined)
    return field.value = value.toString();
}

function getFormElementsByType(formName, typeName)
{
  var result = new Array();

  if (formName == undefined || typeName == undefined)
    return result;

  var form = getForm(formName);

  var j = 0;
  for (i = 0; i < form.elements.length; i++)
  {
    var element = form.elements[i];
    if (element.type == typeName)
    {
      result[j] = element;
      j++;
    }
  }

  return result;
}

function disableAllFormElements(formName, prefix)
{
  setAllFormElementsEnabled(formName, false, prefix);
}

function enableAllFormElements(formName, prefix)
{
  setAllFormElementsEnabled(formName, true, prefix);
}

function toggleAllFormElementsEnabled(formName, prefix)
{
  if (formName == undefined)
    return;
  if (prefix == undefined)
    prefix = '';

  var form = getForm(formName);
  for (i = 0; i < form.elements.length; i++)
  {
    var element = form.elements[i];
    var name = element.name;

    var first6 = name.substring(6,0);

    if (first6 != "submit" && first6 != "previo" && element.type != 'hidden')
    {
      if (prefix.length <= 0 || name.indexOf(prefix) == 0)
        element.disabled=!element.disabled;
    }
  }
}

function setAllFormElementsEnabled(formName, enabled, prefix)
{
  if (formName == undefined)
    return;
  if (enabled == undefined)
    enabled = true;
  if (prefix == undefined)
    prefix = '';

  var form = getForm(formName);
  for (i = 0; i < form.elements.length; i++)
  {
    var element = form.elements[i];
    var name = element.name;

    var first6 = name.substring(6,0);

    if (first6 != "submit" && first6 != "previo" && element.type != 'hidden')
    {
      if (prefix.length <= 0 || name.indexOf(prefix) == 0)
        element.disabled=!enabled;
    }
  }
}

function getFormCheckBoxGroup(prefix, formName)
{
  var result = new Array();

  if (prefix == undefined)
    return result;
  if (formName == undefined)
    formName = 'form';

  var form = getForm(formName);

  var j = 0;
  for (i = 0; i < form.elements.length; i++)
  {
    var element = form.elements[i];
    if (element.type == 'checkbox' && element.name.indexOf(prefix) == 0)
    {
      result[j] = element;
      j++;
    }
  }

  return result;
}

function setFormCheckBoxGroupChecked(prefix, checked, formName)
{
  if (prefix == undefined)
    return;
  if (checked == undefined)
    checked = true;

  var checkboxes = getFormCheckBoxGroup(prefix, formName);

  for (i = 0; i < checkboxes.length; i++)
  {
    checkboxes[i].checked = checked;
  }
}

function submitFormWithNewCommand(formName, cmd)
{
  var form = getForm(formName);
  setFormValue("cmd", cmd, formName);
  form.submit();
}

