module Supercharged::Helpers

  @gateways = {}

  def self.gateway(name)
    @gateways[name.to_sym] || raise("Gateway not registered")
  end

  def self.init_gateway(name, options)
    klass = gateway_class_by_name(name)
    gateway = klass.new(options)
    add_gateway(name, gateway)
  end

  private

	def self.gateway_class_by_name(name)
    "ActiveMerchant::Billing::#{name.to_s.camelcase}Gateway".classify.constantize
  rescue NameError
    raise "Unknown gateway '#{name}'"
  end

  def self.add_gateway(name, gateway)
    @gateways[name.to_sym] = gateway
  end
end