function countPropertiesInObject(theObject)
{
  var propertyCount = 0;
  for (var p in theObject)
  {
    propertyCount++;
  }
  return propertyCount;
}

function inArray(needle, haystack)
{
  // Checks the given array (haystack) to see if it contains the given item of
  // interest (needle).

  for (var k = 0; k < haystack.length; k++)
  {
    //console.debug('inArray: "', needle, '" = "', haystack, '"?');
    if (needle == haystack[k]) return true;
  }

  return false;
}

function listFormElements(form)
{
  // Sets the value of a hidden field to a comma-separated list of form
  // element names for use on the server-side to weed out removed data
  // from the session information.

  var elements = form.elements;
  var formElementNames = '';
  for (var k = 0; k < elements.length; k++)
  {
    if ((elements[k].type == 'checkbox') ||
        (elements[k].type == 'radio')    ||
        (elements[k].type == 'text')     ||
        (elements[k].type == 'textarea') ||
        (elements[k].type == 'hidden'))
    {
      if (formElementNames.length > 0) formElementNames += ',';
      formElementNames += elements[k].name;
    }
  }
  if (formElementNames.length > 0) document.mainform.form_elements.value = formElementNames;

  return true;
}

