
function RSS (url, num, el, desc, type, delay, step)
{
   this.url = url;
   this.el = YUKU.get_by_id(el);
   this.desc = desc;
   this.num = num;
   this.type = type;
   this.delay = delay;
   this.step = step;

   this.init();

   return this;
}

RSS.prototype =
{
   url : '',
   el : null,
   desc : 0,
   delay : 1000,
   step : 5,
   type : 0,
   num : 10,
   scroller : null,
   xml : null,
   items : [],

   init : function ()
   {
      this.xml = new XHConn();

      var me = this;
      var url = '/widgets/rss/';
      var query = 'u=' + encodeURIComponent(this.url) + '&num=' + this.num;

      this.xml.connect(url, 'GET', query, function (doc) { me.onload(doc); });
   },

   onload : function (doc)
   {
      this.items = [];

      if (doc.responseXML && doc.responseXML.getElementsByTagName('items').length > 0)
      {
         var items = doc.responseXML.getElementsByTagName('items')[0].getElementsByTagName('item');

         for (var i = 0, l = items.length; i < l; i++)
         {
            var item = this.parseItem(items[i]);

            var html = '<a href="' + item.link + '" title="' + item.title + '">' + item.title + '</a>';
            if (this.desc)
               html += '<br>' + item.description;

            this.items.push(html);
         }

         if (this.type == -1)  // list
            this.addList();
         else
            this.addScroller();
      }

      doc = items = item = html = null;
   },

   parseItem : function (el)
   {
      var item = {};

      if (el.getElementsByTagName('title')[0])
         item.title = el.getElementsByTagName('title')[0].firstChild.nodeValue;
      else
         item.title = '';

      if (el.getElementsByTagName('description')[0])
         item.description = el.getElementsByTagName('description')[0].firstChild.nodeValue;
      else
         item.description = '';

      if (el.getElementsByTagName('link')[0])
         item.link = el.getElementsByTagName('link')[0].firstChild.nodeValue;
      else
         item.link = '';

      return item;
   },

   addScroller : function ()
   {
      this.el.innerHTML = '';
      this.scroller = new Scroller(this.el.id, this.items, this.type, this.delay, this.step);
   },

   addList : function ()
   {
      this.el.innerHTML = '';
      var ul = YUKU.make_el('UL', this.el);
      for (i = 0, l = this.items.length; i < l; i++)
      {
         var li = YUKU.make_el('LI', {innerHTML: this.items[i]}, ul);
      }
   }
}