module ActiveMerchant #:nodoc:
  module Billing #:nodoc:
    ##
    # Delegates to the appropriate gateway, either the Transaction or Advanced
    # depending on options passed to new.
    #
    class UsaEpayGateway < Gateway

      self.abstract_class = true

      ##
      # Creates an instance of UsaEpayTransactionGateway by default, but if 
      # :software id or :live_url are passed in the options hash it will
      # create an instance of UsaEpayAdvancedGateway.
      #
      def self.new(options={})
        unless options.has_key?(:software_id) || options.has_key?(:live_url)
          UsaEpayTransactionGateway.new(options)
        else
          UsaEpayAdvancedGateway.new(options)
        end
      end
    end
  end
end
