# File lib/openid/urinorm.rb, line 46
    def Util.urinorm(uri)
      uri = URI.parse(uri)
      
      raise URI::InvalidURIError.new('no scheme') unless uri.scheme
      uri.scheme = uri.scheme.downcase
      unless ['http','https'].member?(uri.scheme)
        raise URI::InvalidURIError.new('Not an HTTP or HTTPS URI')
      end

      raise URI::InvalidURIError.new('no host') unless uri.host
      uri.host = uri.host.downcase

      uri.path = _remove_dot_segments(uri.path)
      uri.path = '/' if uri.path.length == 0
      
      uri = uri.normalize.to_s
      uri = uri.gsub(/%[0-9a-zA-Z]{2}/) {
        i = $&[1..2].upcase.to_i(16)
        UNRESERVED[i] ? i.chr : $&.upcase
      }

      return uri
    end