/**
 * validation.js - FORM validation functions
 *
 * @version 2 May 2005
 * @author  Joseph Oster, wingo.com
 */

function trimString(str) {
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
  }

var foMsg = "";
var focusIsSet = false;
var pleaseEnter = "Please enter ";

function setFldGood(formField) {
  formField.className = "formFldGood";
  }

function setError(formField, addMsg) {
  foMsg += addMsg + "\n";
  formField.className = "formFldBad";
  if (!focusIsSet) {
    formField.focus();
    focusIsSet = true;
    }
  }

function reqField(formField, fldLabel) {
  formField.value = trimString(formField.value);
  if (formField.value == "") setError(formField, pleaseEnter + fldLabel + ".");
  }

function reqSelect(formField, fldLabel) {
  if (formField.selectedIndex < 2) setError(formField, "Please select " + fldLabel + ".");
  }

function reqEmail(formField) {
  formField.value = trimString(formField.value);
  if (formField.value == "") setError(formField, pleaseEnter + "Email Address.");
  else if (!foEmail(formField.value)) setError(formField, "Email Address is invalid.");
  }

function reqPhone(formField, fldLabel) {
  if (formField.value == "") setError(formField, pleaseEnter + fldLabel + ".");
  else {
    var digits = foNumFilter(formField.value);
    if (digits.length != 10) setError(formField, "Invalid " + fldLabel + "; 10 digits required.");
    }
  }

function reqZip(formField, fldLabel) {
  if (formField.value == "") setError(formField, pleaseEnter + fldLabel + ".");
  else {
    var digits = foNumFilter(formField.value);
    if ((digits.length != 5) && (digits.length != 9)) setError(formField, "Invalid " + fldLabel + "; 5 or 9 digits required.");
    }
  }

function reqSSN(formField, fldLabel) {
  if (formField.value == "") setError(formField, pleaseEnter + fldLabel + ".");
  else {
    var digits = foNumFilter(formField.value);
    if (digits.length != 9) setError(formField, "Invalid " + fldLabel + "; 9 digits required.");
    }
  }

function validate(whichForm) {
  foMsg = "";
  focusIsSet = false;
  if (whichForm == "Rates") {
    reqField(document.PAGEFORM.FirstName, "First Name");
    reqField(document.PAGEFORM.LastName, "Last Name");
    reqPhone(document.PAGEFORM.Phone, "Phone Number");
    reqEmail(document.PAGEFORM.Email);
    reqField(document.PAGEFORM.pAddress, "Property Address");
    reqField(document.PAGEFORM.pCity, "Property City");
    reqZip(document.PAGEFORM.pZip, "Property Zip Code");
    reqField(document.PAGEFORM.LoanAmount, "Loan Amount");
    reqField(document.PAGEFORM.PropertyValue, "Property Value");
    }
  else if (whichForm == "PreQualify") {
    reqField(document.PAGEFORM.FirstName, "First Name");
    reqField(document.PAGEFORM.LastName, "Last Name");
    reqPhone(document.PAGEFORM.Phone, "Phone Number");
    reqEmail(document.PAGEFORM.Email);
    reqField(document.PAGEFORM.pAddress, "Property Address");
    reqField(document.PAGEFORM.pCity, "Property City");
    reqZip(document.PAGEFORM.pZip, "Property Zip Code");
    reqField(document.PAGEFORM.Paycheck, "Gross Paycheck");
    reqField(document.PAGEFORM.CheckingSaving, "Checking and Savings");
    }
  else if (whichForm == "Commercial") {
    reqField(document.PAGEFORM.ApplicantName, "Applicant Name");
    reqPhone(document.PAGEFORM.Phone, "Phone Number");
    reqEmail(document.PAGEFORM.Email);
    }
  else if (whichForm == "Loan") {
    reqField(document.PAGEFORM.pAddress, "Property Address");
    reqField(document.PAGEFORM.pCity, "Property City");
    reqZip(document.PAGEFORM.pZip, "Property Zip Code");
    reqField(document.PAGEFORM.PropertyValue, "Property Value");
    reqSelect(document.PAGEFORM.PropertyUse, "Property Use.");
    reqField(document.PAGEFORM.DownPayment, "Down Payment");
    reqField(document.PAGEFORM.LoanAmount, "Loan Amount");
    reqSelect(document.PAGEFORM.InterestRate, "Interest Rate.");
    reqField(document.PAGEFORM.FirstName, "First Name");
    reqField(document.PAGEFORM.LastName, "Last Name");
    reqSelect(document.PAGEFORM.MaritalStatus, "Marital Status.");
    reqPhone(document.PAGEFORM.Phone, "Phone Number");
    reqEmail(document.PAGEFORM.Email);
    reqField(document.PAGEFORM.Address, "Address");
    reqField(document.PAGEFORM.City, "City");
    reqField(document.PAGEFORM.Zip, "Zip Code");
    if (document.PAGEFORM.coBorrower.checked) {
      reqField(document.PAGEFORM.FirstName_co, "Co-Borrower First Name");
      reqField(document.PAGEFORM.LastName_co, "Co-Borrower Last Name");
      reqSelect(document.PAGEFORM.MaritalStatus_co, "Co-Borrower Marital Status.");
      reqPhone(document.PAGEFORM.Phone_co, "Co-Borrower Phone Number");
      reqField(document.PAGEFORM.Address_co, "Co-Borrower Address");
      reqField(document.PAGEFORM.City_co, "Co-Borrower City");
      reqField(document.PAGEFORM.Zip_co, "Co-Borrower Zip Code");
      }
    }
  else if (whichForm == "Private") {
    reqField(document.PAGEFORM.ApplicantName, "Applicant Name");
    reqPhone(document.PAGEFORM.Phone, "Phone Number");
    reqEmail(document.PAGEFORM.Email);
    }
  else if (whichForm == "Investors") {
    reqField(document.PAGEFORM.ApplicantName, "Applicant Name");
    reqPhone(document.PAGEFORM.Phone, "Phone Number");
    reqEmail(document.PAGEFORM.Email);
    }

  if (foMsg == "") return true;
  else {
    alert(foMsg);
    return false;
    }
  }
