function submitRegistration(siteRoot, defaultValues, validateFieldsFlag) {
  jQuery("#registrationErrors").html("");
  clearErrors();
  var validFields = true;
  var registerData = getRegisterFormData();
  registerData = removeDefaultFields(registerData, defaultValues);
  if (validateFieldsFlag) {
    validFields = validateRegisterForm(registerData,defaultValues);
  }
  
  if (validFields) {
    jQuery.ajax({
      url:  siteRoot + "/register",
      type: "POST",
      data: jQuery("#registrationForm").serialize(),
      success: function(data) {
        jQuery("#registrationForm").replaceWith(data);
      }
    });
  }
}
function clearErrors() {
  $(".error").html("");
}

function removeDefaultFields(formData, defaultData) {
  if (defaultData.username == formData.username) {
    formData.username="";    
  }
  if (defaultData.password == formData.password) {
    formData.password="";
  }
  if (defaultData.confirmPassword == formData.confirmPassword) {
    formData.confirmPassword="";    
  }
  if (defaultData.displayName == formData.displayName) {
    formData.displayName="";
  }
  if (defaultData.address  == formData.address) {
    formData.address="";
  }
  if (defaultData.organization == formData.organization) {
    formData.organization="";
  }
  if (defaultData.position == formData.position) {
    formData.position="";
  }
  if (defaultData.email== formData.email) {
    formData.email="";
  }
  return formData;
}

function getRegisterFormData(){
  var registerData = new Object();
  registerData.username = $('input[name=username]').val();
  registerData.password = $('input[name=password]').val();
  registerData.confirmPassword = $('input[name=confirmPassword]').val();
  registerData.email = $('input[name=email]').val();
  registerData.displayName = $('input[name=displayName]').val();
  registerData.address = $('input[name=address]').val();
  registerData.organization = $('input[name=organization]').val();
  registerData.position = $('input[name=position]').val();  
  return registerData;
}

function validateRegisterForm(registerData, defaultFields) {
  var requiredMessage = "This field is required";
  var passwordMatch = "The password and confirm password fields don't match.";
  var emailMessage = "The email should match x@y.z";
  var validFields = true;
  
  registerData = removeDefaultFields(registerData, defaultFields);
  
  if (registerData.username == "") {
    $("#usernameError").html(requiredMessage);
    validFields = false;
  }
  if (registerData.password == "") {
    $("#passwordError").html(requiredMessage);
    validFields = false;
  }
  if (registerData.confirmPassword == "" || registerData.confirmPassword != registerData.password) {
    $("#cpasswordError").html(passwordMatch);
    validFields = false;
  }
  if (registerData.displayName == "" ) {
    $("#displayNameError").html(requiredMessage);
    validFields = false;
  }
  if (registerData.address == "") {
    $("#addressError").html(requiredMessage);
    validFields = false;
  }
  if (registerData.organization == "") {
    $("#organizationError").html(requiredMessage);
    validFields = false;
  }
  if (registerData.position == "") {
    $("#positionError").html(requiredMessage);
    validFields = false;
  }
  if (!validateEmail(registerData.email)) {
    $("#emailError").html(emailMessage);
    validFields = false;
  }
  return validFields;
}

function getAutoboxInitValues() {
  var data = new Object();
  data.username = "Username";
  data.password = "Password";
  data.confirmPassword = "Confirm Password";
  data.email = "Email";
  data.displayName = "Name";
  data.address = "Address";
  data.organization = "Organization";
  data.position = "Position";  
  return data;
}

