
var proceed = 2;
var emptyString = /^\s*$/
var glb_vfld;      // retain vfld for timer thread

// Trim leading/trailing whitespace off string
function trim(str) {return str.replace(/^\s+|\s+$/g, '');}

// Delayed focus setting to get around IE bug
function setFocusDelayed() {glb_vfld.focus();}

function setfocus(vfld) {
  // save vfld in global variable so value retained when routine exits
  glb_vfld = vfld;
  setTimeout( 'setFocusDelayed()', 100 );
}

function error(fld) {
  var elem = document.getElementById(fld);
  if (elem) elem.style.visibility = "visible";
}

function clear (fld) {
  var elem = document.getElementById(fld);
  if (elem) elem.style.visibility = "hidden";
};

function getObj(name) {
  if (document.getElementById) {
    return document.getElementById(name);
  }
  else if (document.all) {
    return document.all[name];
  }
  else if (document.layers) {
    return document.layers[name];
  }
}

function commonCheck    (vfld,   // element to be validated
                         ifld,   // id of element to receive info/error msg
                         reqd)   // true if required
{
  if (!document.getElementById) return true;  // not available on this browser - leave validation to the server
  var elem = getObj(ifld);
  if (!elem) return true;

  if (emptyString.test(vfld.value)) {
    if (reqd) {
      error(ifld);  
      setfocus(vfld);
      return false;
    }
    else {
      clear(ifld);
      return true;  
    }
  }
  return proceed;
}

// Validate if something has been entered
function validatePresent(vfld,   // element to be validated
                         ifld)   // id of element to receive info/error msg
{
  var stat = commonCheck (vfld, ifld, true);
  if (stat != proceed) return stat;

  clear(ifld);  
  return true;
};

// Validate if e-mail address
function validateEmail  (vfld,   // element to be validated
                         ifld,   // id of element to receive info/error msg
                         reqd)   // true if required
{
  var stat = commonCheck (vfld, ifld, reqd);
  if (stat != proceed) return stat;

  var tfld = trim(vfld.value);  // value of field with whitespace trimmed off
  var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/
  if (!email.test(tfld)) {
    error(ifld);
    setfocus(vfld);
    return false;
  }

  var email2 = /^[A-Za-z][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/
  if (!email2.test(tfld)) 
    error(ifld);
  else
    clear(ifld);
  return true;
};
