extern function validate()
{
  var form_username = String.trim(WMLBrowser.getVar("username"));
  var form_password = String.trim(WMLBrowser.getVar("password"));
  var form_email = String.trim(WMLBrowser.getVar("email"));
  var form_name = String.trim(WMLBrowser.getVar("name"));
  var form_birthday = String.trim(WMLBrowser.getVar("birthday"));

  if (""==form_username){
    WMLBrowser.setVar("errorMsg", "The User Name field must not be empty.");
    WMLBrowser.refresh();
    return;
  }

  if (""==form_password){
    WMLBrowser.setVar("errorMsg", "The Password field must not be empty.");
    WMLBrowser.refresh();
    return;
  }

  if (""==form_email){
    WMLBrowser.setVar("errorMsg", "The Email field must not be empty.");
    WMLBrowser.refresh();
    return;
  }

  if (String.length(form_password) < 8){
    WMLBrowser.setVar("errorMsg", "The password must contain at least 8 characters since a short password is less secure.");
    WMLBrowser.refresh();
    return;
  }

  if (!isEmailValid(form_email)){
    WMLBrowser.setVar("errorMsg", "The email address's format is invalid.");
    WMLBrowser.refresh();
    return;
  }

  if (""!=form_birthday && !isDateValid(form_birthday)){
    WMLBrowser.setVar("errorMsg", "The date in the Birthday field is invalid.");
    WMLBrowser.refresh();
    return;
  }

  submit_form(form_username, form_password, form_email, form_name, form_birthday);
}

function isEmailValid(emailAddr)
{
  if (String.elements(emailAddr, "@") != 2)
    return false;

  var element_1 = String.elementAt(emailAddr, 0, "@");
  var element_2 = String.elementAt(emailAddr, 1, "@");
  if (""==element_1 || ""==element_2)
    return false;

  return true;
}

function isDateValid(date)
{
  var mm = String.subString(date, 0, 2);
  var dd = String.subString(date, 2, 2);
  var yyyy = String.subString(date, 4, 4);

  mm = Lang.parseInt(mm);
  dd = Lang.parseInt(dd);
  yyyy = Lang.parseInt(yyyy);

  if (mm<1 || mm>12)
    return false;

  var maxDay = 31;
  if (4==mm || 6==mm || 9==mm || 11==mm)
    maxDay = 30;
  if (2==mm){
    if (0 == yyyy%4)
      maxDay = 29;  // Leap year
    else
      maxDay = 28;
  }

  if (dd<1 || dd>maxDay)
    return false;

  return true;
}

function submit_form(form_username, form_password, form_email, form_name, form_birthday)
{
  WMLBrowser.setVar("errorMsg", "");

  WMLBrowser.setVar("username", form_username);
  WMLBrowser.setVar("password", form_password);
  WMLBrowser.setVar("email", form_email);
  WMLBrowser.setVar("name", form_name);
  WMLBrowser.setVar("birthday", form_birthday);

  WMLBrowser.go("validateFormEg1_success.wml");
}
