<!--

var v_field = null;
var v_options = new Array();
var v_noTransform = new Array();
v_noTransform["FILLED"] = 1;
v_noTransform["MIN_LEN"] = 1;
v_noTransform["MAX_LEN"] = 1;
v_noTransform["RANGE_LEN"] = 1;
v_noTransform["MIN_NBR"] = 1;
v_noTransform["MAX_NBR"] = 1;
v_noTransform["RANGE_NBR"] = 1;

function checkField(field, opts) {
  v_options["f"] = opts.search(/f/i) != -1;  // focus on errored fields
  v_options["a"] = opts.search(/a/i) != -1;  // alert on errored fields
  v_options["t"] = opts.search(/t/i) != -1;  // transform valid fields

  v_field = field;

  for(var i = 2; i < arguments.length; i++) {
    parts = arguments[i].split(" ");
    for(var k in parts) parts[k] = new String(parts[k]).replace(/(['"\\\0])/, "\\$1");
    func = parts[0];
    if(msg = eval(func + "('" + new String(formfield_getValue(v_field)).replace(/(['"\\\0])/, "\\$1") + "'" + (parts.length > 1 ? ", '" + parts.slice(1).join("', '") + "'" : "") + ")")) {
      if(v_options["a"]) {
        alert(msg);
      }
      if(v_options["f"]) {
        if(v_field.select) {
          v_field.select();
        }
        v_field.focus();
      }
      return false;
    }
    else if(v_options["t"] && !v_noTransform[func]) {
      formfield_setValue(v_field, eval("TO_" + func + "('" + formfield_getValue(v_field) + "'" + (parts.length > 1 ? ", '" + parts.slice(1).join("', '") + "'" : "") + ")"));
    }
  }

  return true;
}

function regCheckField(field, opts, pattern, fieldname) {
  v_options["f"] = opts.search(/f/i) != -1;  // focus on errored fields
  v_options["a"] = opts.search(/a/i) != -1;  // alert on errored fields
  v_options["t"] = opts.search(/t/i) != -1;  // transform valid fields

  v_field = field;

  if(("" + formfield_getValue(v_field)).search(pattern) == -1) {
    if(v_options["a"]) {
      alert("Entry for " + fieldname + " does not seem to be formatted correctly");
    }
    if(v_options["f"]) {
      v_field.select(); v_field.focus();
    }
    return false;
  }

  return true;
}

function FILLED(str) {
  var fieldname = separator = "";
  for(var i = 1; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return str.length != 0 ?
         "" :
         "Please enter a value for " + (fieldname ? fieldname : "entry");
}
function ALPHA(str) {
  var fieldname = separator = "";
  for(var i = 1; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return str.search(/^[a-zA-Z]*$/) == 0 ?
         "" :
         (fieldname ? fieldname : "Entry") + " may only contain alpahabetic characters";
}
function ALPHANUM(str) {
  var fieldname = separator = "";
  for(var i = 1; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return str.search(/^[a-zA-Z0-9]*$/) == 0 ?
         "" :
         (fieldname ? fieldname : "Entry") + " may only contain alpahabetic and numeric characters";
}
function NUM(str) {
  var fieldname = separator = "";
  for(var i = 1; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return str.search(/^[0-9]*$/) == 0 ?
         "" :
         (fieldname ? fieldname : "Entry") + " may only contain numeric characters";
}
function INT(str) {
  var fieldname = separator = "";
  for(var i = 1; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return str.search(/^[\-\+]?[0-9]*$/) == 0 ?
         "" :
         (fieldname ? fieldname : "Entry") + " must be an integer (may not contain any decimal places)";
}
function DEC(str) {
  var fieldname = separator = "";
  for(var i = 1; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return str.search(/^[\+\-]?[0-9]*\.?[0-9]*$/) == 0 ?
         "" :
         (fieldname ? fieldname : "Entry") + " must be a number";
}
function PHONE(str) {
  var fieldname = separator = "";
  for(var i = 1; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return (str.replace(/[^0-9]/g, "")).length == 10 ?
         "" :
         (fieldname ? fieldname : "Entry") + " must contain 10 numeric characters (area code + 7 digit phone number)";
}
function F_PHONE(str) {
  var fieldname = separator = "";
  for(var i = 1; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return (str.replace(/[^0-9]/g, "")).length > 5 ?
         "" :
         (fieldname ? fieldname : "Entry") + " must be a valid number including country code";
}
function EMAIL(str) {
  var fieldname = separator = "";
  for(var i = 1; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return str.search(/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/) == 0 ?
         "" :
         (fieldname ? fieldname : "Entry") + " must be a properly formatted email address";
}
function SSN(str) {
  var fieldname = separator = "";
  for(var i = 1; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return (str.replace(/[^0-9]/g, "")).length == 9 ?
         "" :
         (fieldname ? fieldname : "Entry") + " must contain 9 numeric characters";
}
function STATE(str) {
  var fieldname = separator = "";
  for(var i = 1; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return str.replace(/^[A-Za-z]{2}$/g, "") == 0 ?
         "" :
         (fieldname ? fieldname : "Entry") + " must contain 2 alphabetic characters";
}
function ZIP(str) {
  var fieldname = separator = "";
  for(var i = 1; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return str.replace(/^[0-9]{5}(\D[0-9]{4})?$/g, "") == 0 ?
         "" :
         (fieldname ? fieldname : "Entry") + " must contain 5 numeric characters, or match the new 5 + 4 zipcode format";
}


function MIN_LEN(str, len) {
  var fieldname = separator = "";
  for(var i = 2; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return str.length >= 1 * len ?
         "" :
         (fieldname ? fieldname : "Entry") + " may not contain less than " + len + " characters";
}
function MAX_LEN(str, len) {
  var fieldname = separator = "";
  for(var i = 2; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return str.length <= 1 * len ?
         "" :
         (fieldname ? fieldname : "Entry") + " may not contain more than " + len + " characters";
}
function RANGE_LEN(str, min, max) {
  var fieldname = separator = "";
  for(var i = 3; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return str.length >= 1 * min && str.length <= 1 * max ?
         "" :
         (fieldname ? fieldname : "Entry") + " must contain between " + min + " and " + max + " characters";
}
function MIN_NBR(str, min) {
  var fieldname = separator = "";
  for(var i = 2; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return 1 * str >= 1 * min ?
         "" :
         (fieldname ? fieldname : "Entry") + " may not be less than " + min;
}
function MAX_NBR(str, max) {
  var fieldname = separator = "";
  for(var i = 2; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return 1 * str >= 1 * max ?
         "" :
         (fieldname ? fieldname : "Entry") + " may not be greater than " + max;
}
function RANGE_NBR(str, min, max) {
  var fieldname = separator = "";
  for(var i = 3; i < arguments.length; i++, separator = " ") fieldname += separator + arguments[i];
  return 1 * str >= 1 * min && 1 * str <= 1 * max ?
         "" :
         (fieldname ? fieldname : "Entry") + " must be between " + min + " and " + max;
}


function TO_ALPHA(str) {
  return str;
}
function TO_ALPHANUM(str) {
  return str;
}
function TO_NUM(str) {
  return str;
}
function TO_INT(str) {
  return 1 * str;
}
function TO_DEC(str, places) {
  newStr = str;
  if(places || places == 0)
    newStr = decRound(newStr, places);
  return 1 * newStr;
}
function TO_PHONE(str) {
  stripped = str.replace(/[^0-9]/g, "");
  return "(" + stripped.substr(0, 3) + ") " + stripped.substr(3, 3) + "-" + stripped.substr(6, 4);
}
function TO_F_PHONE(str) {
  return stripped = str.replace(/[^0-9]/g, "");
}
function TO_EMAIL(str) {
  return str;
}
function TO_SSN(str) {
  stripped = str.replace(/[^0-9]/g, "");
  return stripped.substr(0, 3) + "-" + stripped.substr(3, 2) + "-" + stripped.substr(5, 4);
}
function TO_STATE(str) {
  return str.toUpperCase();
}
function TO_ZIP(str) {
  return str;
}


function decRound(n, p) {
  n = "" + n;
  decPlaces = n.length - n.indexOf(".") - 1;
  if (decPlaces > p) {
    x = Math.pow(10, p);
    n = Math.round(n * x) / x;
  }
  return n;
}

//-->