function update_email() {
  var email = $('#email_value').html()   // If it starts with <span, it's blank
  if(email.match(/^<span/i)) email = "";
  return dialog('update_email.html', {ignore_bg_click:true, params:{email:email}});
}

function update_password_form() {
  return dialog('update_password.html', {ignore_bg_click:true});//, {params:{email:email}});
}

function check_availability() {
  var username = $('#username').val();
  if(! username) return dialog("Enter a username in the <b>username</b> field before clicking the 'check availability' link.", {elephant:true});
  $.post('/account/check_availability', {user: username}, check_availability_callback, 'json');
  return false;
}
function check_availability_callback(hash) {
  $('#check_availability, #available, #not_available').hide();
  hash.result ? $('#available').show() : $('#not_available').show();
}

function sign_up_form(choose_username) {
  params = {};
  if(choose_username) params['do'] = 'choose_username';
  dialog('sign_up.html', {ignore_bg_click:true, params:params})

  analytics_event("Sign Up", "Clicked")

  return false;
}

function sign_up() {
  if(sign_up_errors)   // Error if there's a complaint on the page
    return dialog("You must fix the errors before submitting (the <span style='color:#cc3333'>red text</span>).", {elephant:true});

  var fields = $('#sign_up').serializeArray();

  $.post('/account/sign_up', fields, sign_up_callback, 'json');
  return false;
}

function sign_up_callback(hash) {
  if(captcha_if_no_username(sign_up, hash)) return false;
  if(hash.result == 'success') {
    analytics_event("Sign Up", "Success", {label:$('#username').val()})

    if($('#recaptcha_response_field').length) close_dialog();   // Close captcha dialog if open

    close_dialog()   // Close original dialog if open

    dialog(hash.dialog, {ignore_bg_click:true});
  }else{
    dialog((hash.message || "An error occurred"), {elephant:true});
  }
}

function validate_sign_up_username() {
  var username = $("#username").val();
  var complaint = $("#username_complaint");

  if(username != "" && ! username.match(/^[a-z0-9]+$/)) {
    $('#check').hide()
    complaint.text("lower-case letters or numbers only");
  }else if(username != "" && username.length < 4) {
    $('#check').hide()
    complaint.text("not long enough");
  }else{
    $('#check').show()
    complaint.text("");
  }
}

function validate_sign_up() {
  sign_up_errors = false;
  var username = $('#username').val();
  var username_complaint = $('#username_complaint');

  var bad_passwords = "qwertyuiop asdfghjkl; 123123123 1234567890 password1234 passphrase1234 anonymous1234 abcdefghij abc123456 letmein1234 liverpool charlie monkey arsenal thomas"
  var password = $('#password').val();
  var verify_password = $('#verify_password').val();
  var password_complaint = $('#password_complaint');
  var verify_password_complaint = $('#verify_password_complaint');
  var email = $('#email').val();
  var email_complaint = $('#email_complaint');

  sign_up_errors = sign_up_errors ||
    validate_password_and_verify(password, password_complaint, verify_password, verify_password_complaint);

  if(! email_valid(email) && email != ""){
    email_complaint.text("incomplete");
    sign_up_errors = true;
  }else
    email_complaint.text("");
}

function validate_password_and_verify(password, password_complaint, verify_password, verify_password_complaint) {
  var bad_passwords = "qwertyuiop asdfghjkl; 123123123 1234567890 password1234 passphrase1234 anonymous1234 abcdefghij abc123456 letmein1234 liverpool charlie monkey arsenal thomas"

  errors = false;
  if(password == "")
    password_complaint.text("");
  else if(password.length < 6) {
    password_complaint.text("not long enough");
    errors = true;
  }else if(bad_passwords.indexOf(password) >= 0 || password.match(/(.)\1\1\1/) || password.match(/(..)\1\1/)) {
    password_complaint.text("not strong enough");
    errors = true;
  }else{
    password_complaint.text("");
  }

  if(password != verify_password && verify_password != ''){
    verify_password_complaint.text("doesn't match");
    errors = true;
  }else
    verify_password_complaint.text("");

  return errors;
}

function email_valid(email) {
  return email.match(/^[.\w_+-]+@[.\w-]+\.[\w-][\w-]+$/);
}
