<!--
//****************************************************************************
// Validation.js - external javascript validation functions.
//
// No copying, modifying or otherwise using this code may be done without 
// expressed consent of EComplish LLC.
//
// Copyright 2005, 2006 EComplish LLC.
//****************************************************************************


//****************************************************************************
//Acceptable Constant Characters defins for checking validity of fields 
// (and their descriptions for alert messages )
//****************************************************************************
var alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ ";
var alphaDesc = "letters";
var numbers = "0123456789";
var numbersDesc = "numbers";
var symbols = "-+ #@!*&./\()";
var symbolsDesc = "symbols";
var alphaNumeric = alpha + numbers + symbols;
var alphaNumericDesc = "letters, numbers, spaces or basic symbols";

//****************************************************************************
//The generic Validate function.  Required should be set to "true" or "false"
//****************************************************************************
function Valid(formFieldName, formFieldDesc, minLength, maxLength, required, charSet, charSetDesc){
  if (formFieldName.value == "" && required == "true"){
    alert("Please enter a value for the \"" + formFieldDesc + "\" field.");
    formFieldName.focus();
    return (false);
  }
  else if(formFieldName.value != ""){
    var checkOK = charSet;
    var checkStr = formFieldName.value;
    var allValid = true;
    for (i = 0;  i < checkStr.length;  i++){
      ch = checkStr.charAt(i);
      for (j = 0;  j < checkOK.length;  j++)
        if (ch == checkOK.charAt(j))
          break;
      if (j == checkOK.length){
        allValid = false;
        break;
      }
    }
    if (!allValid){
      alert("Please enter only " + charSetDesc + " in the \"" + formFieldDesc + "\" field.");
      formFieldName.focus();
      return (false);
    }
    if (formFieldName.value.length < minLength){
      alert("Please enter at least " + minLength + " characters in the \"" + formFieldDesc + "\" field.");
      formFieldName.focus();
      return (false);
    }
    if (formFieldName.value.length > maxLength){
      alert("Please enter at most " + maxLength + " characters in the \"" + formFieldDesc + "\" field.");
      formFieldName.focus();
      return (false);
    }
  }
  return (true);
}

//****************************************************************************
//Validates an ABA number.  This assumes the field has ALREADY been verified
//for formatting, length, requiredness, etc.
//****************************************************************************
function ValidABA(formFieldName, formFieldDesc){
  var sum = 0;
  var routingNumber = formFieldName.value;
  for (i = 0; i < routingNumber.length; i += 3) {
    sum += parseInt(routingNumber.charAt(i),10) * 3
      +  parseInt(routingNumber.charAt(i + 1),10) * 7
      +  parseInt(routingNumber.charAt(i + 2),10);
  }
  if (sum != 0 && sum % 10 == 0) return true;
  alert("Please enter a valid ABA Number in the \"" + formFieldDesc + "\" field.");
  formFieldName.focus();
  return (false);
}

//****************************************************************************
//Validates an email address format based on industry standards
// Allows email address field to be blank.  
// Use Valid function if email should be required.
//****************************************************************************
function ValidEmail(formFieldName, formFieldDesc){
  var x = formFieldName.value;
  var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  if (x == "" || filter.test(x)) return true;
  alert("The format of your \"" + formFieldDesc + "\" is invalid.  Please enter a valid \"" + formFieldDesc + "\".");
  formFieldName.focus();
  return (false);
}

//****************************************************************************
//Checks that two fields match and spits out an error if not
//****************************************************************************
function Match(formFieldNameOne, formFieldDescOne, formFieldNameTwo, formFieldDescTwo){
  if(formFieldNameOne.value == formFieldNameTwo.value) return true;
  alert("The \""+formFieldDescOne+"\" field must match the \""+formFieldDescTwo+"\" field.  Please correct the \""+formFieldDescTwo+"\" field.");
  formFieldNameTwo.focus();
  return (false);
}

//****************************************************************************
//Checks that the charge total is numerical and has 1 decimal and 
// 2 digits following it
//****************************************************************************
function ValidAmount(formFieldName, formFieldDesc){  
  var checkStr = formFieldName.value;
  var filter  = /^([0-9])*\.([0-9]){2}$/;
  if (filter.test(checkStr)) return true;
  alert("Please ensure the \""+formFieldDesc+"\" field is numerical and contains one decimal followed by two numbers.");
  formFieldName.focus();
  return (false);
}
//-->



