function SetupCreateAccountAjax(form)
{
	var EmailValidatorRegex = /^([a-zA-Z0-9_\+\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	
	var isSubmitting = false;
	
	$(form).submit(function() {
		if (isSubmitting) return false;
		
		$(form).find(".error").remove();

		var errorRequired = false;
		var errorEmail = false;
		var errorPassword = false;
		var errorPasswordLength = false;
		
		var d = ClientAPI._encodeForm(form);
		// Required:
		// - username, password, confirm-password
		// - Any fields in the form with name being 'custom[...]' and @required
		// - password, confirm-password must be the same
		// - username must be in the syntax of an email address
		
		if (d.username) {
			if (!EmailValidatorRegex.test(d.username)) {
				errorEmail = true;
			}
		} else {
			errorRequired = true;
		}
		if (!d.password) {
			errorRequired = true;
		}
		if (d.password && d['confirm-password'] != d.password) {
			errorPassword = true;
		}
		if (d.password && d.password.length < 6)
		{
			errorPasswordLength = true;
		}
		$("input[name^='custom['][required]", form).each(function() {
			if (!this.value) {
				errorRequired = true;
			}
		})
		
		$('[required]', form).removeClass('incomplete');
		
		function _() {
			var ap = [];
			for (var i = 0; i < arguments.length; i++)
				ap.push(arguments[i]);
			var cb = ap.pop();
			if (pageLanguage) {
				ClientAPI.post("com.sightworks.platform.i18n", "translate", { args: ap }).getValue(function(r) {
					try { cb(r); } catch (e) { ; }
				});
			} else {
				var s = ap[0];
				for (var i = 1; i < ap.length; i++)
					s = s.replace(new RegExp('%' + i, 'g'), function() { return ap[i]; });
				try { cb(s); } catch (e) { ; }
			}
		}
		
		if (errorRequired) {
			$(form).prepend("<span class='error form-error'></span>");
			_("All fields are required.", function(r) {
				$('span.form-error').text(r);
			});
			$('[required]', form).addClass('incomplete');
		}
		else if (errorEmail) {
			$(form).prepend("<span class='error form-error'></span>");
			_("Username must be a valid email address.", function(r) {
				$('span.form-error').text(r);
			});
			$(':input[name=username]', form).addClass('incomplete');
		}
		else if (errorPassword) {
			$(form).prepend("<span class='error form-error'></span>");
			_("Passwords do not match.", function(r) {
				$('span.form-error').text(r);
			});
			$(':input[type=password]', form).addClass('incomplete');
		}
		else if (errorPasswordLength) {
			$(form).prepend("<span class='error form-error'></span>");
			_("Password must be at least 6 characters long.", function(r) {
				$('span.form-error').text(r);
			});
			$(':input[type=password]', form).addClass('incomplete');
		}
		
		if ($("span.error", form).size()) {
			return false;
		}
		
		isSubmitting = true;
		
		ClientAPI.post("com.sightworks.platform.login", "createAccount", form).getValue(function(value) {
			if (value.success) {
				location.href = value.path;
			} else {
				$("form").prepend("<span class='error form-error'></span>");
				$("form .form-error").text(value.reason);
			}
			isSubmitting = false;
		});
		return false;
	}).attr("novalidate", "");
}

