var pretty_fields = new Array();

pretty_fields["propstate"]  = "Property State";
pretty_fields["firstname"]  = "First Name";
pretty_fields["lastname"]   = "Last Name";
pretty_fields["street"]     = "Street Address";
pretty_fields["city"]       = "City";
pretty_fields["state"]      = "State";
pretty_fields["zip"]        = "Zip";
pretty_fields["email"]      = "Email";
pretty_fields["loantype"]   = "Loan Type";


function $(id) {
  return document.getElementById(id);
  }

function badinteger (num) {
  if (! num.match(/^\d+$/)) return true;
  return false;
  }

function checkemail(email) {
  var pattern = new
  RegExp("^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$");
  if (pattern.test(email)) return true;
  return false;
  }

function validate() {

  var error_div = $('errorMsg');
  error_div.style.display = 'none';

  var error_msg    = new Array();
  var missing_flds = new Array();


  var required_fields = new Array(
    "firstname", "lastname", "street", "city", "state", "zip", 
    "email"
    );

  var int_fields = new Array(
    "loanamount", "downpayment", "value", "balance"
    );
  var error = false;

  var ps = $("i_propstate");
  var ps_value = ps[ps.selectedIndex].value;
  if (ps_value == "") {
    error = true;
    missing_flds.push("'Property State'");
    $("c_propstate").style.backgroundColor = 'red';
    }
  else {
    $("c_propstate").style.backgroundColor = 'white';
    }

  var lt = $("c_loantype");
  var lt_value = lt[lt.selectedIndex].value;


  if (lt_value == "") {
    error = true;
    missing_flds.push("'Loan Type'");
    $("c_lt").style.backgroundColor = 'red';
    }
  else {
    $("c_lt").style.backgroundColor = 'white';
    }

  for (var i = 0; i < required_fields.length; i++) {
     var cell  = $("c_" + required_fields[i]);
     var value = $("i_" + required_fields[i]).value;
     if(value == "") {
       cell.style.backgroundColor = 'red';
       error = true;
       missing_flds.push("'" + pretty_fields[required_fields[i]] + "'");
       }
     else {
       cell.style.backgroundColor = 'white';
       }
     }

  if (missing_flds.length)
    error_msg.push("The following required fields were missing:<br><i>&nbsp;" +
                   missing_flds.join(", ") + "</i>");

  // require at least one phone number
  if($("i_workphone").value == "" &&
     $("i_homephone").value == "" &&
     $("i_cellphone").value == "") {
    $("c_homephone").style.backgroundColor = 'yellow';
    $("c_workphone").style.backgroundColor = 'yellow';
    $("c_cellphone").style.backgroundColor = 'yellow';
    error = true;
    var msg = "";
    if (error_msg.length) msg = "<br><br>";
    msg += "At least one phone field (i.e. work phone, home phone, or cell phone) must be included in the form submission";
    error_msg.push(msg);
    }
  else {
    $("c_homephone").style.backgroundColor = 'white';
    $("c_workphone").style.backgroundColor = 'white';
    $("c_cellphone").style.backgroundColor = 'white';
    }

  var evalue = $("i_email").value;

  if (evalue != "" && checkemail(evalue) == false) {
    error = true;
    var msg = "";
    if (error_msg.length) msg = "<br><br>";
    msg += "Invalid E-mail '" + evalue + "' submitted";
    error_msg.push(msg);
    $("c_email").style.backgroundColor = 'red';
    }
    
  var cr = $("i_credit");
  var cr_value = cr[cr.selectedIndex].value;
  if (cr_value == "") {
    error = true;
    missing_flds.push("'Credit Rating'");
    $("c_credit").style.backgroundColor = 'red';
    }
  else {
    $("c_credit").style.backgroundColor = 'white';
    }

  var badint_fields = new Array();
  // check integer-based fields for valid numbers
   for (var i = 0; i < int_fields.length; i++) {
    var cell    = $("c_" + int_fields[i]);
    var input   = $("i_" + int_fields[i]);
    input.value = input.value.replace(/,/g, "");
    var value   = input.value;
    if(value != "" && badinteger(value)) {
      cell.style.backgroundColor = 'red';
      error = true;
      badint_fields.push(int_fields[i]);
      }
    else 
      cell.style.backgroundColor = 'white';
    }

  if (badint_fields.length) {
    var msg = "";
    if (error_msg.length) msg = "<br><br>";
    error_msg.push("The following fields (if included) must be a whole number:<br><i>&nbsp;" + badint_fields.join(", ") + "</i>");
    }


  if(error == true) {
    error_div.innerHTML = "<font size='2'>" + error_msg.join("") + "</font>";
    error_div.style.display = 'block';
    alert("The form submitted contained errors,\nsee above for clairification");
    return false;
    }
  return true;
}

