function TrimString(sInString)
{
  sInString = sInString.replace( /^\s+/g, "" );// strip leading
  return sInString.replace( /\s+$/g, "" );// strip trailing
}

function validateTerms(termsId, errorId)
{
  var termsElement = document.getElementById(termsId);
  var errorElement = document.getElementById(errorId);
  var terms = termsElement.value;

  // turn off any prior error message
  errorElement.style.display = "none";

  // check for empty string
  if (TrimString(terms).length < 1) {
    termsElement.value = "";
    termsElement.focus();
    return false;
  }
  // check for illegal characters
  if (/[^\.\w\s\&\@\'\-\"]+/.test(terms)) {
    errorElement.style.display = "block";
    errorElement.innerHTML = "Illegal character in terms.";
    termsElement.focus();
    return false;
  }
  // check for unclosed quotes
  var matches = terms.match(/\"/g);
  if (matches != null && matches.length%2 == 1) {
    errorElement.style.display = "block";
    errorElement.innerHTML = "Unclosed quote in terms.";
    termsElement.focus();
    return false;
  }
  // check for empty quotes and other invalid character sequences
  var invalid = terms.search(/\"\"|\"\s\"/);
  if (invalid > -1) {
    errorElement.style.display = "block";
    errorElement.innerHTML = "Empty quotes in terms.";
    termsElement.focus();
    return false;
  }
  // check for other invalid character sequences
  var invalidseq = terms.search(/\s\-|^\-/);
  if (invalidseq > -1) {
    errorElement.style.display = "block";
    errorElement.innerHTML = "Invalid character sequence in terms.";
    termsElement.focus();
    return false;
  }
  return true;
}

