<%= include('header', 'Change payment information') %> <%= if ( $error ) { $OUT .= qq!Error: $error

!; } ''; %>
<%= use Tie::IxHash; use HTML::Widgets::SelectLayers; my $preauto = '). qq(). qq(
). qq( ). qq(); my %paybychecked = ( 'BILL' => include('bill'), 'CARD' => include('card')."$preauto CHECKED $postauto", 'DCRD' => include('card')."$preauto $postauto", 'CHEK' => include('check')."$preauto CHECKED $postauto", 'DCHK' => include('check')."$preauto $postauto", ); my %payby_index = ( 'CARD' => qq/Credit Card/, 'DCRD' => qq/Credit Card/, 'CHEK' => qq/Check/, 'DCHK' => qq/Check/, 'LECB' => qq/Phone Bill Billing/, 'BILL' => qq/Billing/, 'COMP' => qq/Complimentary/, 'PREP' => qq/Prepaid Card/, 'PREPAY' => qq/Prepaid Card/, ); ## Don't show CHEK or DCHK option if ACH is read only delete( $payby_index{'CHEK'} ) unless !$ach_read_only; delete( $payby_index{'DCHK'} ) unless !$ach_read_only; tie my %options, 'Tie::IxHash', (); foreach my $payby_option ( grep { exists( $payby_index{$_} ) } @paybys ) { $options{$payby_option} = $payby_index{$payby_option}; } $options{$payby} = $payby_index{$payby} unless exists($options{$payby}); #don't want to show multiple "Credit card" or "Check" options my %paybyremove = ( 'CARD' => 'DCRD', 'DCRD' => 'CARD', 'CHEK' => 'DCHK', 'DCHK' => 'CHEK', ); delete( $options{ $paybyremove{$payby} } ); delete $options{'DCRD'} unless $payby eq 'DCRD' || ! exists $options{'CARD'}; delete $options{'DCHK'} unless $payby eq 'DCHK' || ! exists $options{'CHEK'}; ## set default layer to first payby. @p = keys %options; $payby = $p[0]; HTML::Widgets::SelectLayers->new( options => \%options, selected_layer => $payby, # form_name => 'dummy', # form_action => 'dummy.cgi', layer_callback => sub { my $layer = shift; return ''.$paybychecked{$layer}.qq!$tail!; }, )->html; %> <%= include('footer') %>