// ==UserScript==
// @name          RSS Auto Discovery on Google Search
// @namespace     http://blog.fkoji.com/
// @description	  Add feed link to Google search result
// @include       http://*.google.*/search*q=*
// ==/UserScript==

(function() {
 function getPage(link) {
  GM_xmlhttpRequest({method: "GET", url: link.href, onload: function(res) {
   body = res.responseText;
   var linkTags = body.match(/<link *?.+?\/?>/g);
   if (!linkTags) return;
   for (var i = 0; i < linkTags.length; i++) {
    var elem = linkTags[i];
    if (elem.match(/rel="alternate"/) && elem.match(/type="application\/(.*?)xml"/)) {
     switch (RegExp.$1) {
      case "rss+": type = "RSS"; break;
      case "atom+": type = "Atom"; break;
      default: type = "Feed";
     }
     if (elem.match(/href="(.+?)"/)) {
      var a = document.createElement("a");
      a.href = RegExp.$1;
      with(a.style) {
       fontWeight = 'bold';
       color = '#FF6600';
      }
      a.appendChild(document.createTextNode(type));
      link.parentNode.insertBefore(a, link.nextSibling);
      link.parentNode.insertBefore(document.createTextNode(" "), link.nextSibling);
      break;
     }
    }
   }
  }});
 }

 if (!location.search.match(/site(%3A|:)/)) {
  var links = document.evaluate('//a[@class="l"]', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  if (!links.snapshotLength) return;
  for (var i = 0; i < links.snapshotLength; i++) {
   var link = links.snapshotItem(i);
   getPage(link);
  }
 }
})();

