function _v_test_sub(condition,fld,msg) {
  if (condition) return (true);
  if (fld != null) fld.focus();
  alert(msg);
  return (false);
}

function _v_test_sub2(condition,fld) {
  if (condition) return (true);
  return (false);
}

function _v_retest_sub(re,fld,msg,required) {
  if (!required && /^\s*$/.test(fld.value)) return (true);
  if (required && /^\s*$/.test(fld.value)) return (_v_test_sub(false,fld,msg));
  return (_v_test_sub(re.test(fld.value),fld,msg));
}

function _v_retest_subWComma(re,val,fld,msg,required) {
  if (!required && /^\s*$/.test(val)) return (true);
  if (required && /^\s*$/.test(val)) return (_v_test_sub(false,fld,msg));
  return (_v_test_sub(re.test(val),fld,msg));
}

function v_iscondition(fld,msg,condition) { return (_v_test_sub(condition,fld,msg)); }
function v_isre(fld,msg,re) { return (_v_test_sub(re.test(fld.value),fld,msg)); }
function v_isnotempty(fld,msg) { return (_v_test_sub(/\S/.test(fld.value),fld,msg)); }
function v_isnotempty2(fld) { return (_v_test_sub2(/\S/.test(fld.value),fld)); }
function v_isselected(fld,msg) { return (_v_test_sub(fld.selectedIndex != 0,fld,msg)); }
function v_isint(fld,msg,required) { return (_v_retest_sub(/^\d+$/,fld,msg,required)); }
function v_isnonzeroint(fld,msg,required) { return (_v_retest_sub(/^0*[1-9]\d*$/,fld,msg,required)); }
function v_issignedint(fld,msg,required) { return (_v_retest_sub(/^[+-]?\d+$/,fld,msg,required)); }
function v_isreal(fld,msg,required) { return (_v_retest_sub(/^\.\d+$|^\d+(\.\d*)?$/,fld,msg,required)); }
function v_issignedreal(fld,msg,required) { return (_v_retest_sub(/^[+-]?\.\d+$|^[+-]?\d+(\.\d*)?$/,fld,msg,required)); }
function v_iscurrency(fld,msg,required) { return (_v_retest_sub(/^(\$ *)?\.\d{1,2}$|^(\$ *)?\d+(\.\d{0,2})?$/,fld,msg,required)); }
function v_iszipcode(fld,msg,required) { return (_v_retest_sub(/^\d{5}([- ]?\d{4})?$/,fld,msg,required)); }
function v_isphoneac(fld,msg,required) { return (_v_retest_sub(/^\(?\d{3}\)?$/,fld,msg,required)); }
function v_isphoneprefix(fld,msg,required) { return (_v_retest_sub(/^\d{3}$/,fld,msg,required)); }
function v_isphone4(fld,msg,required) { return (_v_retest_sub(/^\d{4}$/,fld,msg,required)); }
function v_isphone(fld,msg,required) { return (_v_retest_sub(/^\d{3}[-. ]?\d{4}$/,fld,msg,required)); }
function v_isacphone(fld,msg,required) { return (_v_retest_sub(/^\(?\d{3}[).-]? ?\d{3}[-. ]?\d{4}$/,fld,msg,required)); }

function v_isemailaddress(fld,msg,required) {
  var valid = "[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]";
  return (_v_retest_sub(new RegExp("^" + valid + "+(\\." + valid + "+)*@" + valid + "+(\\." + valid + "+)+$"),fld,msg,required));
}

function v_isemailaddressWComma(fld,msg,required) {
  var valid = "[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]";
  var vals  = fld.value;
  var eml_array = vals.split(",");
	for(i=0;i<eml_array.length;i++){
	var s   = eml_array[i];
	var val = s.replace(" ","");
	//alert(val);
	var test = (_v_retest_subWComma(new RegExp("^" + valid + "+(\\." + valid + "+)*@" + valid + "+(\\." + valid + "+)+$"),val,fld,msg,required));
	//alert(test);
	if(test==false){
	  fld.focus;
	  return(false);
	 }
	}
	return(true);
}

function v_radiochecked(fld,msg) {
  var i;
  for (i = 0; i < fld.length; i++)
    if (fld[i].checked)
      return (true);
  return (_v_test_sub(false,fld[0],msg));
}

function is_radiochecked(fld) {
  var i;
  for (i = 0; i < fld.length; i++)
    if (fld[i].checked)
      return (true);
  return (false);
}

function uncheckAll(formObj){ 
with (formObj) { 
  for (var i=0;i < elements.length;i++){ 
    fldObj = elements[i]; 
      if(fldObj.type == "checkbox"||fldObj.type=="radio"){ 
         fldObj.checked = false; 
      }  
    } 
  } 
}
