if (!window.YUKU) var YUKU = {}

YUKU.topicTitles =
{
   link : function ()
   {
      if (YUKU.get_by_id('forum_viewtopic'))
      {
         if (document.title.indexOf('link=') != -1)
         {
            var url = document.title.substring(5, document.title.indexOf(';'));
            window.location = url;
         }

         return;
      }

      var tds = YUKU.get_by_tag('TD', YUKU.get_by_id('wrapper'));
      for (var i = 0, l = tds.length; i < l; i++)
      {
         if (YUKU.class_name.test(tds[i], 'topic-titles') || YUKU.class_name.test(tds[i], 'lastpost'))
         {
            var link = YUKU.get_by_tag('A', tds[i])[0];
            if (link.innerHTML.indexOf('link=') != -1)
            {
               var url = link.innerHTML.substring(5, link.innerHTML.indexOf(';'));
               var text = link.innerHTML.substring(link.innerHTML.indexOf(';') + 1);

               link.target = url.indexOf('yuku.com') == -1 && url.charAt(0) != '/' && url.charAt(0) != '#' ? '_blank' : '_self';
               link.href = url;
               link.title = link.innerHTML = text;

               if (YUKU.class_name.test(tds[i], 'topic-titles'))
                  YUKU.class_name.add(tds[i].parentNode, 'row-link');
            }
         }
         else if (YUKU.class_name.test(tds[i], 'latest'))
         {
            var link = YUKU.get_by_tag('A', tds[i])[0];
            if (link && link.innerHTML.indexOf('link=') != -1 && link.getAttribute('title').indexOf('link=') != -1)
            {
               var url = link.getAttribute('title').substring(5, link.getAttribute('title').indexOf(';'));
               var text = link.getAttribute('title').substring(link.getAttribute('title').indexOf(';') + 1);

               link.target = url.indexOf('yuku.com') == -1 && url.charAt(0) != '/' && url.charAt(0) != '#' ? '_blank' : '_self';
               link.href = url;
               link.title = link.innerHTML = text;
            }
         }
      }

      var uls = YUKU.get_by_tag('UL', YUKU.get_by_id('wrapper'));
      for (var i = 0, l = uls.length; i < l; i++)
      {
         if (YUKU.class_name.test(uls[i], 'topic-cloud'))
         {
            var links = YUKU.get_by_tag('A', uls[i]);
            for (j = 0, m = links.length; j < m; j++)
            {
               var link = links[j];
               if (link.innerHTML.indexOf('link=') != -1)
               {
                  var url = link.innerHTML.substring(5, link.innerHTML.indexOf(';'));
                  var text = link.innerHTML.substring(link.innerHTML.indexOf(';') + 1);

                  link.target = url.indexOf('yuku.com') == -1 && url.charAt(0) != '/' && url.charAt(0) != '#' ? '_blank' : '_self';
                  link.href = url;
                  link.title = link.innerHTML = text;
               }
            }
         }
      }
   },

   bbcode : function ()
   {
      document.title = this._strip(document.title);

      // topic links, active members, last post etc
      var links = YUKU.get_by_tag('A', YUKU.get_by_id('wrapper'));
      for (var i = 0, l = links.length; i < l; i++)
         links[i].innerHTML = this._parse(links[i].innerHTML);

      // topic titles
      var heads = YUKU.get_by_tag('H3', YUKU.get_by_id('wrapper'));
      for (var i = 0, l = heads.length; i < l; i++)
         heads[i].innerHTML = this._parse(heads[i].innerHTML);
         
      var heads = YUKU.get_by_tag('H2', YUKU.get_by_id('wrapper'));
      for (var i = 0, l = heads.length; i < l; i++)
         heads[i].innerHTML = this._parse(heads[i].innerHTML);

      // reply titles
      var spans = YUKU.get_by_tag('SPAN', YUKU.get_by_id('wrapper'));
      for (var i = 0, l = spans.length; i < l; i++)
         if (YUKU.class_name.test(spans[i], 'post-title'))
            spans[i].innerHTML = this._parse(spans[i].innerHTML);

      links = spans = heads = null;
   },

   _parse : function (str)
   {
      str = str.replace(/\[(\/)?(b|i|u|s|big|small|sup|sub)\]/ig, "<$1$2>");
      str = str.replace(/([\[])color\=([A-Za-z0-9\#]+)([\]])/ig, "<span style=\"color: $2\">");
      str = str.replace(/\[\/color\]/ig, "</span>");

      return str;
   },

   _strip : function (str)
   {
      str = str.replace(/\[(\/)?(b|i|u|s|big|small|sup|sub)\]/ig, '');
      str = str.replace(/([\[])(c|color)\=([A-Za-z0-9\#]+)([\]])/ig, '');
      str = str.replace(/\[\/(c|color)\]/ig, '');

      return str;
   }
}