// Copyright © 2003 - 2004, Market Truths Limited. All rights reserved.

// FilterText() ----------------------------------------------------------------

function FilterText(strValue)
{
  var regPattern;
  regPattern = /^\s+|[\x00-\x08\x0A-\x1F\x7F]|\s+$/g;
  return strValue.replace(regPattern,"");
}

// FilterTextArea() ------------------------------------------------------------

function FilterTextArea(strValue)
{
  var regPattern;
  regPattern = /^\s+|[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]|\s+$/g;
  return strValue.replace(regPattern,"");
}

// IsCheckboxSelected() --------------------------------------------------------

function IsCheckboxSelected(form,fieldA,fieldZ,message)
{
  // Requires one of the fields to be selected.
  var selected = false;
  var i;
  var fieldname;
  
  fieldname = fieldA.name.substr(0, fieldA.name.length - 1);

  i = 0;
  while (form.elements[i].name != fieldA.name)
  {
    i = i + 1;
  }

  i = i - 1;
  do
  {
    i = i + 1;
    if (form.elements[i].name.substr(0, fieldname.length) == fieldname)
      if (form.elements[i].checked == true)
        selected = true;
  }
  while (form.elements[i].name != fieldZ.name);

  if (!selected && (message != ""))
  {
    alerted = true; alert(message);
  }
  return selected;
}

// IsIntegerInRange() ----------------------------------------------------------

function IsIntegerInRange(value,min,max,message)
{
  var pattern = /^[\+\-]?[0-9]+$/;
  if (! pattern.test(value))
  {
    if (message != "") { alerted = true; alert(message); }
    return false;
  }
  // Check is in range ...
  if (!((min <= value) && (value <= max)))
  {
    if (message != "") { alerted = true; alert(message); }
    return false;
  }
  return true;
}

// IsNonBlank() ----------------------------------------------------------------

function IsNonBlank(value,message)
{
  var pattern = /\S/
  if (! pattern.test(value))
  {
    if (message != "") { alerted = true; alert(message); }
    return false;
  }
  return true;
}

// IsNotTooLong() --------------------------------------------------------------

function IsNotTooLong(value,maxlength,message)
{
  var requote = /'/g;
  if (! (value.replace(requote,"''").length <= maxlength))
  {
    if (message != "") { alerted = true; alert(message); }
    return false;
  }
  return true;
}

// IsEmailAddress() ------------------------------------------------------------

function IsEmailAddress(value,message)
{
  // Matches local-part @ domain with at least one '.' embedded in domain.
  var pattern = /^[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+(\.[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+)*@[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+(\.[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+)+$/;
  if (! pattern.test(value))
  {
    if (message != "") { alerted = true; alert(message); }
    return false;
  }
  return true;
}

// IsRadioSelected() -----------------------------------------------------------

function IsRadioSelected(field,message)
{
  // Requires one of the field's radio buttons to be selected.
  var selected = false;
  var i;
  for (i = 0;  i < field.length;  i++)
  {
    if (field[i].checked)
      selected = true;
  }
  if (!selected && (message != ""))
  {
    alerted = true; alert(message);
  }
  return selected;
}

// ResetAlerted() --------------------------------------------------------------

var alerted = false;

function ResetAlerted()
{
  setTimeout('alerted = false;', 3);
}

// SelectAndSetFocus() ---------------------------------------------------------

function SelectAndSetFocus(FormElement)
{
  setTimeout(FormElement + '.select(); ' + FormElement + '.focus(); alerted = false;',3);
}

// SetFocus() ------------------------------------------------------------------

function SetFocus(FormElement)
{
  setTimeout(FormElement + '.focus(); alerted = false;',3);
}

// FilterEnter() ---------------------------------------------------------------

function FilterEnter(e)
// Doesn't have any effect in NN702.
{
  e = (e) ? e : event;
  var charCode = (e.charCode) ? e.charCode : ((e.which) ? e.which : e.keyCode);
  if (charCode == 13 || charCode == 3)
  {
    return false;
  }
  else
  {
    return true;
  }
}