Y! finance enhancement

By Steve Zhou Last update Jan 2, 2006 — Installed 704 times.
// Yahoo Finance Enhancer
// version 0.2 BETA!
// 2005-12-30
// Copyright (c) 2005, Steve Zhou
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//
// --------------------------------------------------------------------
//
// This is a Greasemonkey user script.
//
// To install, you need Greasemonkey: http://greasemonkey.mozdev.org/
// Then restart Firefox and revisit this script.
// Under Tools, there will be a new menu item to "Install User Script".
// Accept the default configuration and install.
//
// To uninstall, go to Tools/Manage User Scripts,
// select this script, and click Uninstall.
//
// --------------------------------------------------------------------
//
// This script default Yahoo charts to the "TA" charts; and add the 
// following links when approriate:
// 
// - stockcharts, big charts for additional charting
// - msn.money, morningstar, and etf-connect for additional info
// 
// --------------------------------------------------------------------
//
// ==UserScript==
// @name            Y! finance enhancement
// @namespace       http://sxz.org
// @include         http://finance.yahoo.com/q?s=*
// ==/UserScript==
//
// --------------------------------------------------------------------

(function() {
   var allLinks, thisLink;
   var scLink, mbLink, piLink, rkLink;
   var sym;
      
   var leftNavTbl = document.getElementById('leftNavTable');
   allLinks = document.evaluate(
      '//a[@href]',
      leftNavTbl,
      null,
      XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
      null);
   for (var i = 0; i < allLinks.snapshotLength; i++) {
      thisLink = allLinks.snapshotItem(i);
      if (thisLink.href.match(/\/q\/mb\?s=(\w*)/i)) {
         sym = RegExp.$1
         mbLink = thisLink;
         GM_log('MB after: '+mbLink.href);
      }      
      else if (thisLink.href.match(/\/q\/pi\?s=(\w*)/i)) {
         sym = RegExp.$1
         piLink = thisLink;
         GM_log('PI after: '+piLink.href);
      }         
      else if (thisLink.href.match(/\/q\/rk\?s=(\w*)/i) && !rkLink) {
         sym = RegExp.$1
         rkLink = thisLink;
      }        
   }   
   
   allLinks = document.evaluate(
      '//a[@href]',
      document,
      null,
      XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
      null);
   for (var i = 0; i < allLinks.snapshotLength; i++) {
      thisLink = allLinks.snapshotItem(i);
      //GM_log('running inside loop'+thisLink.href);
      if (thisLink.href.match(/\/q\/bc\?s=/i)) {
         thisLink.href = thisLink.href.replace(/\/q\/bc/g,'/q/ta');
         if (piLink)
            thisLink.href += '&l=on&z=l&q=l&p=e50,e100&a=ss,m26-12-9,p12,r14&c=';
         else
            thisLink.href += '&l=on&z=l&q=c&p=e50,e100,v&a=ss,m26-12-9,p12,r14&c=';
         //GM_log('running inside after: '+thisLink.href);   
      }   
      else if (thisLink.href.match(/\/q\/ta\?s=(\w*)/i)) {
         sym = RegExp.$1
         GM_log('TA to stkcharts: '+sym);
         scLink = document.createElement("sc");
         scLink.innerHTML = '<a href="http://stockcharts.com/def/servlet/SC.web?c=' + sym + ',uu[h,a]daclyyay[pb50!b150][vc60][iLh14,3!La12,26,9]&pref=G">Stockcharts</a>';
         thisLink.parentNode.replaceChild(scLink, thisLink);
         GM_log('TA to stkcharts after: '+scLink.href);
      }    
   }
   
   if (scLink) {
      var bcLink = document.createElement("bc");
      bcLink.innerHTML = '<br><a href="http://bigcharts.marketwatch.com/intchart/frames/frames.asp?symb=' + sym + '">Big Chart</a>';
      scLink.parentNode.insertBefore(bcLink, scLink.nextSibling);               
   }
   
   if (mbLink) {
         var msnLink = document.createElement("msn");
         msnLink.innerHTML = '<br><br><a href="http://moneycentral.msn.com/investor/invsub/advisor/advisor.asp?Symbol=' + sym + '">MSN Money</a>';
         mbLink.parentNode.insertBefore(msnLink, mbLink.nextSibling);         
   }
   
   if (piLink) {
         var mstarLink = document.createElement("mstar");
         mstarLink.innerHTML = '<br><br><a href="http://quicktake.morningstar.com/Fund/Snapshot.asp?Country=USA&pgid=hetopquote&Symbol=' + sym + '">Morningstar</a>';
         piLink.parentNode.insertBefore(mstarLink, piLink.nextSibling);         
         
         var msnLink = document.createElement("msn");
         msnLink.innerHTML = '<br><a href="http://moneycentral.msn.com/investor/invsub/advisor/advisor.asp?Symbol=' + sym + '">MSN Money</a>';
         piLink.parentNode.insertBefore(msnLink, mstarLink.nextSibling);                 
   }
   
   if (!mbLink && !piLink && rkLink) {  
         var mstarLink = document.createElement("mstar2");
         mstarLink.innerHTML = '<br><br><a href="http://quicktake.morningstar.com/Fund/Snapshot.asp?Country=USA&pgid=hetopquote&Symbol=' + sym + '">Morningstar</a>';
         rkLink.parentNode.insertBefore(mstarLink, rkLink.nextSibling);         
         
         var msnLink = document.createElement("msn2");
         msnLink.innerHTML = '<br><a href="http://moneycentral.msn.com/investor/invsub/advisor/advisor.asp?Symbol=' + sym + '">MSN Money</a>';
         rkLink.parentNode.insertBefore(msnLink, mstarLink.nextSibling);    
         
         var etfLink = document.createElement("etfc");
         etfLink.innerHTML = '<br><a href="http://www.etfconnect.com?tick=' + sym + '">ETF Connect</a>';
         rkLink.parentNode.insertBefore(etfLink, msnLink.nextSibling);        
         GM_log('ETF stuff: '+mstarLink.nodeName+",  "+rkLink.parentNode.nodeName);         
   }
   
})()

//window.addEventListener("load", function() { doit() }, false);