// ==UserScript==
// @name          google my web links
// @namespace     http://myweb.search.yahoo.com
// @description   Add My Web links to to google search results
// @include       http://google.com/*
// @include       http://www.google.com/*
// @exclude       http://gmail.google.com/*
//
// Heavily borrowed from Annotate Google
//   http://ponderer.org/download/annotate_google.user.js
//
// ==/UserScript==

(function() {
  var REDIRECT = 'http://www.google.com/url?';

  function createLink(href, txt) {
    var link = document.createElement('a');
    link.setAttribute('href', href);
    //link.appendChild(document.createTextNode(txt));
    link.innerHTML = txt;
    return link;
  }

  function removeGoogleRedirect(url) {
    if (url.substr(0, REDIRECT.length) == REDIRECT) {
      var url_tokens = url.split('&');
      for (var t in url_tokens) {
        var token = url_tokens[t];
        if (token.substr(0, 2) == 'q=') {
          url = decodeURIComponent(token.substr(2));
          break;
        }
      }
    }
    return url;
  }

  function getMyLink(url, title) {
    return 'http://synergy2.search.yahoo.com/myresults/bookmarklet?u=' 
             + encodeURIComponent(removeGoogleRedirect(url))
             + '&t='
             + escape(title)
  }
  
  function xpath(expr, doc) {
    if (!doc) {
      doc = document;
    }
    var iter = document.evaluate(expr, doc, null,
                                 XPathResult.ANY_TYPE, null);
    var ret = [];
    var n;
    while (n = iter.iterateNext()) {
      ret.push(n);
    }
    return ret;
  }
  
  function annotate() {
    // get all the links
    // also compatible with the add headings to google user script
    var nodes = xpath("//p[@class='g']/a[1] | //p[@class='g']/h2/a[1]", 
                      document);
    for (var n in nodes) {
      var node = nodes[n];

      // make the feed request
      // checkFeed(id, removeGoogleRedirect(node.href));

      // create a span element for delicious query
      var span = document.createElement('span');
      span.setAttribute('style', 'font-size:70%');
      span.appendChild(document.createTextNode(' '));
      
      var myUrl = getMyLink(node.href, node.text);
      var link = createLink(myUrl, 'add to my web');
      link.title = 'synergy rules!';
      span.appendChild(link);
      
      node.parentNode.insertBefore(span, node.nextSibling);
    }
  }
  

  // make sure this is a google search result page
  var nodes = document.getElementsByTagName('title');
  var isSERP = 0;
  for (var n in nodes) {
    var node = nodes[n];
    if (node.text && node.text.substr(0, 14) == 'Google Search:') {
      isSERP = 1;
      break;
    }
  }
  if (isSERP)
    annotate();
})();
