+<%init>
+my %opt = @_; # custnum
+my $conf = new FS::Conf;
+
+my $company_latitude = $conf->config('company_latitude');
+my $company_longitude = $conf->config('company_longitude');
+
+my @fixups = ('copy_payby_fields', 'standardize_locations');
+
+push @fixups, 'fetch_censustract'
+ if $conf->exists('cust_main-require_censustract');
+
+push @fixups, 'check_unique'
+ if $conf->exists('cust_main-check_unique') and !$opt{'custnum'};
+
+push @fixups, 'do_submit'; # always last
+</%init>
+
+var fixups = <% encode_json(\@fixups) %>;
+var fixup_position;
+
+%# state machine to deal with all the asynchronous stuff we're doing
+%# call this after each fixup on success:
+function submit_continue() {
+ window[ fixups[fixup_position++] ].call();
+}
+
+%# or on failure:
+function submit_abort() {
+ fixup_position = 0;
+ document.CustomerForm.submitButton.disabled = false;
+ cClick();
+}
+