def find_coming n=10, start_time=nil
      start_time = Time.now if start_time.nil?
      feeds = []
      channel.feed_list.each do |feed|
        feed.dates.item_list.each do |item|
          if item.type_attr == "standalone"
            feeds << { :time => Time.parse(item.start.text!), :feed => feed }
          elsif item.type_attr == "recurrent"
            moments = parse_recurrent_date_item(item, n, start_time)
            moments.each do |moment|
              feeds << { :time => moment, :feed => feed }
            end
          elsif item.type_attr == "permanent"
            start = Time.parse(item.start.text!)
            if start > start_time
              feeds << { :time => start, :feed => feed }
            else
              feeds << { :time => start_time, :feed => feed }
            end
          else
            raise DTD::InvalidValueError, "the \"#{item.type_attr}\" is not valid for a date item type attribute"
          end
        end
      end
      feeds = feeds.delete_if { |x| x[:time] < start_time }
      feeds.sort! { |x, y| x[:time] <=> y[:time] }
      return feeds[0..n-1]
    end
def find_coming n=10, start_time=nil
      start_time = Time.now if start_time.nil?
      feeds = []
      channel.feed_list.each do |feed|
        feed.dates.item_list.each do |item|
          if item.type_attr == "standalone"
            feeds << { :time => Time.parse(item.start.text!), :feed => feed }
          elsif item.type_attr == "recurrent"
            moments = parse_recurrent_date_item(item, n, start_time)
            moments.each do |moment|
              feeds << { :time => moment, :feed => feed }
            end
          elsif item.type_attr == "permanent"
            start = Time.parse(item.start.text!)
            if start > start_time
              feeds << { :time => start, :feed => feed }
            else
              feeds << { :time => start_time, :feed => feed }
            end
          else
            raise DTD::InvalidValueError, "the \"#{item.type_attr}\" is not valid for a date item type attribute"
          end
        end
      end
      feeds = feeds.delete_if { |x| x[:time] < start_time }
      feeds.sort! { |x, y| x[:time] <=> y[:time] }
      return feeds[0..n-1]
    end
Returns the next n events from the moment specified in the second
 optional argument.

 === Parameters

 [n = 10] how many coming events should be returned
 [start_time] only events hapenning after this time will be considered

 === Returns

 A list of hashes, sorted by event start time, each hash having
 two keys:

 [:time] start time of the event
 [:feed] feed describing the event