% include( 'elements/edit.html',
            'table'          => 'payment_gateway',
            'name_singular'  => 'Payment gateway',
            'viewall_dir'    => 'browse',
            'fields'         => $fields,
            'field_callback' => $field_callback,
            'labels'         => {
                                  'gatewaynum'           => 'Gateway #',
                                  'gateway_module'       => 'Gateway',
                                  'gateway_username'     => 'Username',
                                  'gateway_password'     => 'Password',
                                  'gateway_action'       => 'Action',
                                  'gateway_options'      => 'Options: (Name/Value pairs, one element per line)',
                                  'gateway_callback_url' => 'Callback URL',
                                },
          )
%>
<%init>
die "access denied"
  unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
my %modules =  (
  '2CheckOut'          => 'Business::OnlinePayment',
  'AuthorizeNet'       => 'Business::OnlinePayment',
  'BankOfAmerica'      => 'Business::OnlinePayment', #deprecated?
  'Beanstream'         => 'Business::OnlinePayment',
  'Capstone'           => 'Business::OnlinePayment',
  'Cardstream'         => 'Business::OnlinePayment',
  'CashCow'            => 'Business::OnlinePayment',
  'CyberSource'        => 'Business::OnlinePayment',
  'eSec'               => 'Business::OnlinePayment',
  'eSelectPlus'        => 'Business::OnlinePayment',
  'Exact'              => 'Business::OnlinePayment',
  'iAuthorizer'        => 'Business::OnlinePayment',
  'Ingotz'             => 'Business::OnlinePayment',
  'InternetSecure'     => 'Business::OnlinePayment',
  'Interswitchng'      => 'Business::OnlineThirdPartyPayment',
  'IPaymentTPG'        => 'Business::OnlinePayment',
  'IPPay'              => 'Business::OnlinePayment',
  'Iridium'            => 'Business::OnlinePayment',
  'Jettis'             => 'Business::OnlinePayment',
  'LinkPoint'          => 'Business::OnlinePayment',
  'MerchantCommerce'   => 'Business::OnlinePayment',
  'Network1Financial'  => 'Business::OnlinePayment',
  'OCV'                => 'Business::OnlinePayment',
  'OpenECHO'           => 'Business::OnlinePayment',
  'PayConnect'         => 'Business::OnlinePayment',
  'PayflowPro'         => 'Business::OnlinePayment',
  'PaymenTech'         => 'Business::OnlinePayment',
  'PaymentsGateway'    => 'Business::OnlinePayment',
  'PayPal'             => 'Business::OnlinePayment',
  'PlugnPay '          => 'Business::OnlinePayment',
  'PPIPayMover '       => 'Business::OnlinePayment',
  'Protx '             => 'Business::OnlinePayment',
  'PXPost'             => 'Business::OnlinePayment',
  'SecureHostingUPG'   => 'Business::OnlinePayment',
  'Skipjack'           => 'Business::OnlinePayment',
  'StGeorge'           => 'Business::OnlinePayment',
  'SurePay'            => 'Business::OnlinePayment',
  'TCLink'             => 'Business::OnlinePayment',
  'TransactionCentral' => 'Business::OnlinePayment',
  'TransFirsteLink'    => 'Business::OnlinePayment',
  'Vanco'              => 'Business::OnlinePayment',
  'viaKLIX'            => 'Business::OnlinePayment',
  'VirtualNet'         => 'Business::OnlinePayment',
  'WesternACH'         => 'Business::OnlinePayment',
); 
my @actions = (
                'Normal Authorization',
                'Authorization Only',
                'Authorization Only, Post Authorization',
              );
my $fields = [
               {
                 field               => 'gateway_namespace',
                 type                => 'hidden',
                 curr_value_callback => sub { my($cgi, $object, $fref) = @_;
                                              $modules{$object->gateway_module}
                                              || 'Business::OnlinePayment'
                                            },
               },
               {
                 field    => 'gateway_module',
                 type     => 'select',
                 options  => [ sort { lc($a) cmp lc ($b) } keys %modules ],
                 onchange => 'setNamespace',
               },
               'gateway_username',
               'gateway_password',
               {
                 field    => 'gateway_action',
                 type     => 'select',
                 options  => \@actions,
               },
               'gateway_callback_url',
               {
                 field               => 'gateway_options',
                 type                => 'textarea',
                 curr_value_callback => sub { my($cgi, $object, $fref) = @_;
                                              join("\r", $object->options );
                                            },
               },
             ];
my $field_callback = sub {
  my ($cgi, $object, $field_hashref ) = @_;
  if ($object->gatewaynum) {
    if ( $field_hashref->{field} eq 'gateway_module' ) {
      $field_hashref->{type} = 'fixed';
    }
  }
};
%init>