% }
% }
<%once>
my $conf = new FS::Conf;
my $money_char = $conf->config('money_char') || '$';
%once>
<%init>
my %opt = @_;
#use Data::Dumper;
#warn Dumper(%opt);
my $key = $opt{field}; # || 'generate_one' #?
tie my %options, 'Tie::IxHash',
map { $_ => $opt{'labels'}->{$_} }
@{ $opt{'options'} }; #just arrayref for now
my $between = exists($opt{html_between}) ? $opt{html_between} : '';
my $options = \%options;
my $selected = exists($opt{curr_value}) ? $opt{curr_value} : '';
#XXX eek. also eek $layer_fields in the layer_callback() call...
my $layer_fields = $opt{layer_fields};
my $layer_values = $opt{layer_values};
my $layer_prefix = $opt{layer_prefix};
sub layer_callback {
my( $layer, $layer_fields, $layer_values, $layer_prefix ) = @_;
return '' unless $layer && exists $layer_fields->{$layer};
tie my %fields, 'Tie::IxHash', @{ $layer_fields->{$layer} };
#XXX this should become an element itself... (false laziness w/edit.html)
# but at least all the elements inside are the shared mason elements now
return '' unless keys %fields;
my $html = "