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

YUKU.filter =
{
   links : null,
   images : null,
   posts : null,

   confirmLinks : function ()
   {
      var links = this.getLinks();
      for (var i = 0, l = links.length; i < l; i++)
         if (links[i].href && !links[i].href.match(/^http:\/\/([A-Za-z0-9\-]+)(\.([A-Za-z0-9]+))?\.yuku\.com/ig))
            links[i].onclick = function (e) {
               if (!confirm('Are you sure you want to go to ' + this.href)) { YUKU.prevent_default(e); return false; }
            };
      links = null;
   },

   replaceLinks : function (filter, replace)
   {
      var links = this.getLinks();
      for (var i = 0, l = links.length; i < l; i++)
      {
         for (var j = 0, m = filter.length; j < m; j++)
         {
            if (links[i].href && links[i].href.match(filter[j]))
            {
               if (typeof (replace) == 'string')
                  links[i].href = replace;
               else if (typeof (replace) == 'object' && replace[j])
                  links[i].href = replace[j];
               else
                  links[i].style.display = 'none';
            }
         }
      }
      links = null;
   },

   replaceImages : function (filter, replace)
   {
      var imgs = this.getImages();
      for (var i = 0, l = imgs.length; i < l; i++)
      {
         for (var j = 0, m = filter.length; j < m; j++)
         {
            if (imgs[i].src && imgs[i].src.match(filter[j]))
            {
               if (typeof (replace) == 'string') {
                  imgs[i].src = replace;
                  imgs[i].style.width = 'auto'; imgs[i].width = '';
                  imgs[i].style.height = 'auto'; imgs[i].height = '';
               }
               else if (typeof (replace) == 'object' && replace[j])
                  imgs[i].src = replace[j];
               else
                  imgs[i].style.display = 'none';
            }
         }
      }
      imgs = null;
   },

   regLinks : function (filter, replace)
   {
      var links = YUKU.get_by_tag('A', YUKU.get_by_id('wrapper'));
      for (var i = 0, l = links.length; i < l; i++)
      {
         for (var j = 0, m = filter.length; j < m; j++)
         {
            if (links[i].href.match(filter[j]))
               links[i].href = links[i].href.replace(filter[j], replace[j]);
         }
      }
      links = null;
   },

   regImages : function (filter, replace)
   {
      var imgs = YUKU.get_by_tag('IMG', YUKU.get_by_id('wrapper'));
      for (var i = 0, l = imgs.length; i < l; i++)
      {
         for (var j = 0, m = filter.length; j < m; j++)
         {
            if (imgs[i].src.match(filter[j]))
               imgs[i].src = imgs[i].src.replace(filter[j], replace[j]);
         }
      }
      imgs = null;
   },

   getLinks : function ()
   {
      if (this.links != null)
         return this.links;

      if (this.posts == null)
         this.posts = YUKU.get_by_class('td', 'post-content', YUKU.get_by_id('wrapper'));

      var posts = this.posts;
      var links = new Array();

      for (var i = 0, l = posts.length; i < l; i++)
      {
         var a = YUKU.get_by_tag('A', posts[i]);

         for (var j = 0, m = a.length; j < m; j++)
            links.push(a[j]);
      }

      this.links = links;

      return this.links;
   },

   getImages : function ()
   {
      if (this.images != null)
         return this.images;

      if (this.posts == null)
         this.posts = YUKU.get_by_class('td', 'post-content', YUKU.get_by_id('wrapper'));

      var posts = this.posts;
      var images = new Array();

      for (var i = 0, l = posts.length; i < l; i++)
      {
         var a = YUKU.get_by_tag('IMG', posts[i]);

         for (var j = 0, m = a.length; j < m; j++)
            images.push(a[j]);
      }

      this.images = images;

      return this.images;
   },

   replaceText : function (strFrom, strTo)
   {
      if (document.body.createTextRange)  // ie
      {
         var range = document.body.createTextRange();
         range.collapse(true);

         while (range.findText(strFrom)) {
            range.text = strTo;
            range.collapse(false);
         }
      }
      else if (document.createTreeWalker)  // moz, probably slow
      {
         var walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, function (node) {
            if (RegExp('script|style', 'i').test(node.parentNode.nodeName)) return NodeFilter.FILTER_REJECT;
            return ((RegExp(strFrom, '').test(node.nodeValue)) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT);
         }, false);

         while (walker.nextNode())
            walker.currentNode.nodeValue = walker.currentNode.nodeValue.replace(strFrom, strTo);

         walker = null;
      }
   }
}