var RSLite;
window.onload = function()
{
  setTimeout("focus_first()",100);
  if (typeof RSLiteObject != "undefined")
  {
    RSLite = new RSLiteObject();
    RSLite.callback = RSLite_callback;
    RSLite.failure = new Function();
  }

  if ((document.form) && (document.form.quickentry))
  {
    removeQuickEntries();
    setTimeout('lookforMatch(document.form);',100);
  }

}
function removeQuickEntries()
{
  var quickentry = document.form.quickentry;
  do
  {
    quickentry.remove(0);
  } while (quickentry.options.length > 0)

}
function focus_first()
{
  var form = document.forms[0];
  for (fld in form) {
    if (typeof(form[fld]) == "object") {
      if (form[fld] != null) {
        if ((form[fld].type == "text") || (form[fld].type == "textarea") || (form[fld].type == "password")) {
          form[fld].focus();
          return true;
        }
      }
    }
  }
}

function lookforMatch(form)
{
  var params = "";
  if (form.first.value)
  {
    params += "first=" + escape(form.first.value);
  }

  if (form.last.value)
  {
    if (params != "")
      params += "&";
    params += "last=" + escape(form.last.value);
  }

  if (form.phone.value)
  {
    if (params != "")
      params += "&";
    params += "phone=" + escape(form.phone.value);
  }

  if (form.street.value)
  {
    if (params != "")
      params += "&";
    params += "street=" + escape(form.street.value);
  }

  if (form.email.value)
  {
    if (params != "")
      params += "&";
    params += "email=" + escape(form.email.value);
  }
  RSLite.call("matches.php", params);
}
function RSLite_callback(response)
{
  if (response.indexOf("id") > -1)
    fillFieldsFromResponse(response);
  else
    fillQuickEntry(response);
}
function fillFieldsFromResponse(response)
{
  alert(response)
}

function fillQuickEntry(response)
{
  var quickentry = document.form.quickentry;
  quickentry.onchange = null;
  removeQuickEntries();
  if (response != "[none]")
  {
    var matches = response.split('&');
    for (matchIndex in matches)
    {
      match = matches[matchIndex];
      var id = match.split(":")[0];
      var matchname = match.split(":")[1];
      var op = new Option(matchname, id);
      quickentry.options.add(new Option(matchname, id));
    }
    quickentry.onchange = quickentry_changed;
  }
}
function quickentry_changed()
{
  var quickentry = document.form.quickentry;
  var param = "id=" + (quickentry.options[quickentry.options.selectedIndex].value);
  RSLite.call("matches.php", param);
}

function validate_step1(form)
{
  var message = "";
  if ((form.email.value.indexOf("@") == -1) || (form.email.value.indexOf(".") == -1))
    message += "Please enter a valid email address.\n";

  if (message != "")
  {
    alert(message);
    return false;
  }
  return true;
}

function validate_step2(form)
{
  var verify = new Array("first:first name","last:last name","street:street address","city","zipcode","email","password","confirm:password confirmation","validationcode:email validation code");
  return verify_entries(form, verify);
}

function validate_step3(form)
{
  var verify = new Array("password","confirm:password confirmation","validationcode:email validation code");
  return verify_entries(form, verify);
}

function validate_step4(form)
{
  var verify = new Array("first:first name","last:last name","street:street address","city","zipcode","email");
  return verify_entries(form, verify);
}

function verify_entries(form, verify)
{
  var message = "";
  for (var i=0; i<verify.length; i++)
  {
    var fieldinfo = verify[i];
    var fieldname = fieldinfo;
    var fielddesc = fieldinfo;
    if (fieldinfo.indexOf(":") != -1)
    {
      fieldname = fieldinfo.split(":")[0];
      fielddesc = fieldinfo.split(":")[1];
    }
    if (form[fieldname].value == "")
    {
      if (fielddesc.match(/^[aeiou]/i))
        message += "You must enter an " + fielddesc + ".\n";
      else
        message += "You must enter a " + fielddesc + ".\n";
    }
    else
    {
      switch (fieldname)
      {
        case "email":
          if ((form.email.value.indexOf("@") == -1) || (form.email.value.indexOf(".") == -1))
            message += "Please enter a valid email address.\n";
          break;
      }
    }
  }

  if ((form.dob) && (form.dob.value != ""))
  {
    // validate the date of birth field...yuck
    var dob = form.dob.value;
    if (dob.match(/\d\d?\/\d\d?\/\d\d\d\d/) == null)
      message += "Please use mm/dd/yyyy format for your date of birth\n"
    else {
      dobArray = dob.split("/");
      if ((dobArray[0]/1 > 12) || (dobArray[0]/1 < 1))
        message += "Invalid month in Date of Birth\n";
      else {
        var daysArray = new DaysArray(dobArray[2]);
        if ((dobArray[1]/1 < 1) || (dobArray[1]/1 > daysArray[dobArray[0]] ))
          message += "Invalid day in Date of Birth\n";
      }
    }
  }
  if (message != "")
  {
    //message += "\n(Address information is required so we can prove we have the\nappropriate percentage of Ann Arbor residents to use Fuller Fields.)";
    alert(message);
    return false;
  }
  return true;
}

function DaysArray(year) {
  for (var i = 1; i <= 12; i++) {
    this[i] = 31;
    if (i==4 || i==6 || i==9 || i==11) {
      this[i] = 30
    }
    else if (i==2) {
      this[i] = (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
    }
   }
   return this;
}

