
var nbsp = 160;    // non-breaking space char
var node_text = 3; // DOM text node-type
var emptyString = /^\s*$/
var glb_vfld;      // retain vfld for timer thread
var proceed = 2; 

function setFocusDelayed() {
  glb_vfld.focus();
}

function setfocus(vfld) {
  glb_vfld = vfld;
  setTimeout("setFocusDelayed()", 100);
}

function commonCheck(vfld, reqd) {
  if (!document.getElementById) return true; 
  if (emptyString.test(vfld.value)) {
    if (reqd) {  
      setfocus(vfld);
      return false;
    } else {
      return true;  
    }
  }
  return proceed;
}

function validatePresent(vfld) {
  var stat = commonCheck (vfld, true);
  if (stat != proceed) return stat;
  return true;
};

function checkEmail (vfld, reqd) {

  var emailFilter=/^.+@.+\..{2,3}$/;
  var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/;
  if (!document.getElementById) return true; 

  // Test the values
  if (emptyString.test(vfld.value)) {
    if (reqd) {
      setfocus(vfld);
      return false;
    } else {
      return true;  
    }
  }

  if (!(emailFilter.test(vfld.value))) { 
    if (reqd) {
      setfocus(vfld);
      return false;
    } else {
      return false;  
    }
  }
  if (vfld.value.match(illegalChars)) { 
    if (reqd) {
      setfocus(vfld);
      return false;
    } else {
      return true;  
    }
  }

  return true;  
}

function checkPhone (vfld, reqd) {

  if (!document.getElementById) return true;

  // Test the values
  if (emptyString.test(vfld.value)) {
    if (reqd) {
      setfocus(vfld);
      return false;
    } else {
      return true;  
    }
  }
  var strng = vfld.value;
  var stripped = strng.replace(/[\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters
  if (isNaN(parseInt(stripped))) {
    if (reqd) {
      setfocus(vfld);
      return false;
    } else {
      return false;  
    }
  }
  if (stripped.length != 10) {
    if (reqd) {
      setfocus(vfld);
      return false;
    } else {
      return true;  
    }
  } 

  // Success
  return true;  
}
