function editField(prompt, fld, req, datatype)
{
  if (!edit(prompt, fld.value, req, datatype))
  {
    try
    {
      fld.focus();
      fld.select();
    }
    catch (e) 
    { }
    return false;
  }
  else
    return true;
}

function edit(prompt, inStr, req, datatype)
{
  var bSts = true;
  if (req == "Y" && inStr == "")
  {
    alert("'" + prompt + "' field is required.");
    return false;
  }
  if (req != "Y" && inStr == "")
    return true;

  switch (datatype)
  {
    case "MONEY":
      bSts = editMoney(inStr);
      break;
    case "DATE":
      bSts = editDate(inStr);
      break;
    case "TIME":
      bSts = editTime(inStr);
      break;
    case "INT":
      bSts = editInt(inStr);
      break;
    case "PHONE":
      bSts = editPhone(inStr);
      break;
    case "TEXT":
    default:
      break;
  }

  if (!bSts)
    alert("Value entered for '" + prompt + "' field is not valid " + datatype + ".");

  return bSts;
}

function editPhone(inStr)
{
  var bSts = true;
  var str = new String(inStr);
  var pieces = inStr.split("-");

  if (pieces.length == 1)
  {
    if (pieces[0].length != 10 || NaN(pieces[0]))
      bSts = false;
  }
  else if (pieces.length == 3)
  {
    if (pieces[0].length != 3 || pieces[1].length != 3 || pieces[2].length != 4 || 
        NaN(pieces[0]) || NaN(pieces[1]) || NaN(pieces[2]))
      bSts = false;
  }
  else
    bSts = false;

  return bSts;
}

function editDate(inStr)
{
  var str = new String(inStr);
  var pieces = inStr.split("-");
  if (pieces.length != 3)
  {
    pieces = inStr.split("/");
    if (pieces.length != 3)
      return false;
  }

  if (pieces[0].length > 2)
  {
    year = pieces[0];
    mon = pieces[1];
    day = pieces[2];
  }
  else
  {
    mon = pieces[0];
    day = pieces[1];
    year = pieces[2];
  }

  if (isNaN(mon) || isNaN(day) || isNaN(year))
    return false;

  d = new Date();
  d.setDate(1);
  d.setYear(year);
  d.setMonth(mon - 1);
  d.setDate(day);

  if ((d.getYear() != year && d.getFullYear() != year) || d.getMonth() + 1 != mon || d.getDate() != day)
    return false;

  return true;
}

function editMoney(inStr)
{
  if (inStr == "")
    return true;
  var str = new String(inStr);
  if (str.substr(0, 1) == "$")
    str = str.substr(1);
  if (isNaN(str))
    return false;

  return true;
}

function editInt(inStr)
{
  if (isNaN(inStr))
    return false;

  if (isNaN(parseInt(inStr, 10)))
    return false;

  return true;
}

function editTime(inStr)
{
  var str = new String(inStr);
  var ampm = "";
  var hour = 0;
  var minutes = 0;
  var pos;

  str = str.toUpperCase();
  if ((pos = str.indexOf("A")) < 0)
    pos = str.indexOf("P");
  if (pos >= 0)
  {
    ampm = str.substr(pos, 1);
    str = str.substr(0, pos);
  }

  pieces = str.split(":");
  if (pieces.length > 2)
    return false;
  if (isNaN(pieces[0]))
    return false;
  hour = parseInt(pieces[0], 10);
  if (pieces.length == 2)
  {
    if (isNaN(pieces[1]))
      return false;
    minutes = parseInt(pieces[1], 10);
  }
  if (ampm == "")
  {
    if (hour < 0 || hour > 24)
      return false;
    if (hour == 24 && minutes > 0)
      return false;
  }
  else
  {
    if (hour < 1 || hour > 12)
      return false;
  }
  if (minutes < 0 || minutes > 59)
    return false;

  return true;
}