function validateUser(form)
{
  return validateName(form.user_name) && validateEmail(form.user_email) && validatePassword(form.user_password) && validatePasswordConfirmation(form.user_password_confirmation) && validateTermsOfUseAcceptance(form.user_terms_of_use);
}

function validateName(input)
{
  if(trim(input.value) == '')
  {
    input.style.border = '2px solid red';
    $('#invalid_name').fadeIn();
    return false;
  }
  else
  {
    input.style.border = null;
    $('#invalid_name').fadeOut();
    return true;
  }  
}

function validateEmail(input)
{
  if(input.value.match(/^[-\w_\.]+\@[-\w_\.]+\.[\w]{2,}$/) == null)
  {
    input.style.border = '2px solid red';
    $('#invalid_email').fadeIn();
    $('#email_already_registered').fadeOut();
    return false;
  }
  else
  {
    input.style.border = null;
    $('#invalid_email').slideUp();
    var response = $.ajax({
      type: 'POST',
      url: '/account/verify_email_uniqueness',
      data: $('form').serialize(),
      async: false
    }).responseText;

    if(response == "0")
    {
      input.style.border = '2px solid red';
      $('#email_already_registered').slideDown();
      return false;          
    }
    else
    {
      input.style.border = null;
      $('#email_already_registered').fadeOut();
      return true;          
    }
  }
}

function validatePassword(input)
{
  if(input.value.length < 4)
  {
    input.style.border = '2px solid red';
    $('#invalid_password').fadeIn();
    return false;
  }
  else
  {
    input.style.border = null;
    $('#invalid_password').fadeOut();
    return true;
  }
}

function validatePasswordConfirmation(input)
{
  if(input.value != document.getElementById('user_password').value)
  {
    input.style.border = '2px solid red';
    $('#invalid_password_confirmation').fadeIn();
    return false;
  }
  else
  {
    input.style.border = null;
    $('#invalid_password_confirmation').fadeOut();
    return true;
  }
}

function validateTermsOfUseAcceptance(checkbox)
{
  if(checkbox.checked)
  {
    return true
  }
  else
  {
    $('#must_accept_terms_of_use').fadeIn();
    return false;
  }
}
