var TickerHistoryQuote = Class.create();
TickerHistoryQuote.prototype = {
	initialize: function(symbol, dateAdded) {
		this.symbol = symbol;
		this.dateAdded = dateAdded;
	},

	serialize: function() {
		return this.symbol + "~" + this.dateAdded;
	},

	unserialize: function(thq) {
		var a = thq.split('~');
		this.symbol = a[0];
		this.dateAdded = a[1];
	}
};

var Feed = Class.create();
Feed.prototype = {
	initialize: function(id, title, url, icon, type) {
		this.id = id;
		this.title = title;
		this.type = type;
		this.url = url;
		if (icon != '') {
			this.icon = "/images/f-icons/" + icon;
		}
	}
};

var f1 = new Feed('f1', "10Q Detective", "http://10qdetective.blogspot.com/feeds/posts/default?alt=rss", "", "f");
var f2 = new Feed('f2', "24/7 Wall Str", "http://feeds2.feedburner.com/247WallSt_full", "247.jpg", "f");
var f3 = new Feed('f3', "Abnormal Returns", "http://abnormalreturns.com/feed/", "", "f");
var f4 = new Feed('f4', "AltEnergy Stocks", "http://www.altenergystocks.com/index.xml", "", "f");
var f5 = new Feed('f5', "Berkshire Ruminations", "http://berkshireruminations.blogspot.com/feeds/posts/default?alt=rss", "", "f");
var f6 = new Feed('f6', "The Big Picture", "http://feeds.feedburner.com/TheBigPicture", "bp.ico", "f");
var f7 = new Feed('f7', "Blog Maverick (Mark Cuban)", "http://www.blogmaverick.com/rss.xml", "", "f");
var f8 = new Feed('f8', "BloggingStocks", "http://feeds.feedburner.com/weblogsinc/bloggingstocks", "bs.ico", "f");
var f9 = new Feed('f9', "Cheap Stocks: Below Net Value", "http://stocksbelowncav.blogspot.com/feeds/posts/default?alt=rss", "", "f");
var f10 = new Feed('f10', "Controlled Greed", "http://feeds.feedburner.com/controlledgreed/ucXV", "", "f");
var f11 = new Feed('f11', "Crossing Wall Street", "http://feeds.feedburner.com/Crossingwallstreet", "", "f");
var f12 = new Feed('f12', "CXO Advisory: Investing Notes", "http://www.cxoadvisory.com/blog/cxofeed.xml", "cxo.ico", "f");
var f13 = new Feed('f13', "Dealbreaker", "http://dealbreaker.com/index.xml", "db.ico", "f");
var f14 = new Feed('f14', "The Dividend Guy", "http://feeds.feedburner.com/TheDividendGuyBlog", "dg.ico", "f");
var f15 = new Feed('f15', "Rising Dividend Investing", "http://feeds.feedburner.com/blogspot/LXmn", "", "f");
var f16 = new Feed('f16', "ETF Trends", "http://feeds.feedburner.com/etftrends-feed", "etf.ico", "f");
var f17 = new Feed('f17', "Fat Pitch Financials", "http://feeds.feedburner.com/FatPitchFinancials", "", "f");
var f18 = new Feed('f18', "Financial Skeptic", "http://financialskeptic.blogspot.com/feeds/posts/default?alt=rss", "", "f");
var f19 = new Feed('f19', "Footnoted.org", "http://feeds.feedburner.com/Footnotedorg", "fn.ico", "f");
var f20 = new Feed('f20', "Freakonomics", "http://feeds.feedburner.com/freakonomicsblog", "", "f");
var f21 = new Feed('f21', "Gannon On Investing", "http://www.gannononinvesting.com/index.xml", "", "f");
var f22 = new Feed('f22', "Jeff Matthews Is Not Making This Up", "http://jeffmatthewsisnotmakingthisup.blogspot.com/feeds/posts/default?alt=rss", "", "f");
var f23 = new Feed('f23', "The Kirk Report", "http://www.thekirkreport.com/index.rdf", "kr.gif", "f");
var f24 = new Feed('f24', "MaddMoney.net", "http://maddmoney.net/feed/", "", "f");
var f25 = new Feed('f25', "Modern Graham", "http://feeds.feedburner.com/moderngrahamcom", "", "f");
var f26 = new Feed('f26', "NakedShorts", "http://nakedshorts.typepad.com/nakedshorts/rss.xml", "", "f");
var f27 = new Feed('f27', "Infectious Greed", "http://feeds.feedburner.com/InfectiousGreed", "", "f");
var f28 = new Feed('f28', "The Peridot Capitalist", "http://feeds.feedburner.com/PeridotCapitalist", "pc.ico", "f");
var f29 = new Feed('f29', "Quant Investor", "http://quantinvestor.blogspot.com/feeds/posts/default?alt=rss", "", "f");
var f30 = new Feed('f30', "Random Roger's Big Picture", "http://randomroger.blogspot.com/feeds/posts/default?alt=rss", "", "f");
var f31 = new Feed('f31', "Seeking Alpha", "http://seekingalpha.com/feed.xml", "sa.ico", "f");
var f32 = new Feed('f32', "Stock Market Beat", "http://feeds.feedburner.com/stockmarketbeat", "", "f");
var f33 = new Feed('f33', "The Stock Masters", "http://thestockmasters.com/rss.xml", "sm.ico", "f");
var f34 = new Feed('f34', "13D Tracker", "http://feeds.feedburner.com/Streetinsidercom13dTracker", "", "f");
var f35 = new Feed('f35', "Ticker Sense", "http://feeds.feedburner.com/typepad/tickersense", "", "f");
var f36 = new Feed('f36', "TraderFeed", "http://traderfeed.blogspot.com/feeds/posts/default?alt=rss", "", "f");
var f37 = new Feed('f37', "Trader Mike", "http://feeds.feedburner.com/TraderMike", "tm.ico", "f");
var f38 = new Feed('f38', "Timothy Sykes", "http://feeds.feedburner.com/TimothySykes-StockTraderAuthorEntrepreneur", "ts.ico", "f");
var f39 = new Feed('f39', "WSJ MarketBeat", "http://feeds.wsjonline.com/wsj/marketbeat/feed", "wsj.ico", "f");
var f40 = new Feed('f40', "Ugly Chart", "http://feeds.feedburner.com/uglychart", "uc.gif", "f");

var f62 = new Feed('f62', "Twitter: Eric Jackson", "http://twitter.com/statuses/user_timeline/ericjackson.rss", "t.ico", "t");
var f64 = new Feed('f64', "Twitter: Guy Kawasaki", "http://twitter.com/statuses/user_timeline/guykawasaki.rss", "t.ico", "t");
var f50 = new Feed('f50', "Twitter: Paul Kedorsky", "http://twitter.com/statuses/user_timeline/pkedrosky.rss", "t.ico", "t");
var f66 = new Feed('f66', "Twitter: Howard Lindzon", "http://twitter.com/statuses/user_timeline/howardlindzon.rss", "t.ico", "t");
var f51 = new Feed('f51', "Twitter: Michael Parekh", "http://twitter.com/statuses/user_timeline/MParekh.rss", "t.ico", "t");
var f61 = new Feed('f61', "Twitter: Timothy Sykes", "http://twitter.com/statuses/user_timeline/timothysykes.rss", "t.ico", "t");
var f53 = new Feed('f53', "Twitter: Fred Wilson", "http://twitter.com/statuses/user_timeline/fredwilson.rss", "t.ico", "t");

var f58 = new Feed('f58', "Twitter: StockJockey", "http://twitter.com/statuses/user_timeline/StockJockey.rss", "t.ico", "t");
var f52 = new Feed('f52', "Twitter: TechCrunch", "http://twitter.com/statuses/user_timeline/TechCrunch.rss", "t.ico", "t");
var f63 = new Feed('f63', "Twitter: TradingGoddess", "http://twitter.com/statuses/user_timeline/TradingGoddess.rss", "t.ico", "t");
var f65 = new Feed('f65', "Twitter: Ugly Chart", "http://twitter.com/statuses/user_timeline/uglychart.rss", "t.ico", "t");

var f67 = new Feed('f67', "Twitter: CNN Breaking News", "http://twitter.com/statuses/user_timeline/cnnbrk.rss", "t.ico", "t");
var f57 = new Feed('f57', "Twitter: BBC Business", "http://twitter.com/statuses/user_timeline/bbcbusiness.rss", "t.ico", "t");
var f56 = new Feed('f56', "Twitter: FT", "http://twitter.com/statuses/user_timeline/financialtimes.rss", "t.ico", "t");
var f59 = new Feed('f59', "Twitter: MarketWatch", "http://twitter.com/statuses/user_timeline/MarketWatch.rss", "t.ico", "t");
var f60 = new Feed('f60', "Twitter: MSNBC Business", "http://twitter.com/statuses/user_timeline/msnbc_business.rss", "t.ico", "t");
var f54 = new Feed('f54', "Twitter: NYT Business", "http://twitter.com/statuses/user_timeline/nyt_biz.rss", "t.ico", "t");
var f55 = new Feed('f55', "Twitter: WSJ", "http://twitter.com/statuses/user_timeline/WSJ.rss", "t.ico", "t");

var SBMM = {
	tickerCount: 0, newsCount: 0, fundCount: 0,
	controlUrl: 'main_handler',
	loginUrl:  'login_handler',
	twitterUrl: 'twitter_news_handler',
	rtArray: [],
	rtToggle: true,
	rtCurrent: 0,
	rtContent: '',
	autoStockUpdateId: [],
	market_condition: true,
	ticker_array: [],
	logged_in: false,
	mhChannel: 'marketsnews',
	mhChannel2: 2,
	mdtView: "24",
	feeds : new Array(f55,f54,f60,f59,f56,f57,f67,f65,f63,f52,f58,f53,f61,f51,f66,f50,f64,f62,f40,f39,f38,f37,f36,f35,f34,f33,f32,f31,f30,f29,f28,f27,f26,f25,f24,f23,f22,f21,f20,f19,f18,f17,f16,f15,f14,f13,f12,f11,f10,f9,f8,f7,f6,f5,f4,f3,f2,f1),
	m:'',h:'',tod:'',
	skipDesktop: false,
	radio: '',

	doStart: function() {
		SBMM.startClock();
		SBMM.setObservers();
		CSS.preloadImages();

		new Ajax.Autocompleter('quick-search-text', 'quote_ac', SBMM.controlUrl, { parameters: 'actionName=4', paramName: "symbol" });

		SBMM.doServerRequest(SBMM.controlUrl, '31', SBMM.doRealTimeNews);
		setInterval(function() {
				SBMM.doServerRequest(SBMM.controlUrl, '31', SBMM.doRealTimeNews);
			}, 15 * 60 * 1000);

		SBMM.processCookie();
		SBMM.cookieLogin();
		// moved into cookieLogin: SBMM.doParamLoading();
		SBMM.drawRadio();
	},

	setObservers: function() {
		$('news-videos-drop', 'market-monitor-drop', 'commodity-monitor-drop', 'templates-drop').each(
			function(id, index) {
				Event.observe($(id), 'click', SBMM.doToggleList, false);
			});

		$('us-watch-call', 'world-watch-call', 'mortgage-watch-call', 'currency-watch-call', 'etf-viewer', 'treasury-watch-call', 'twitter-top', 'energy-watch-call', 'metal-watch-call', 'grain-watch-call', 'livestock-watch-call', 'soft-watch-call').each(
			function(id, index) {
				Event.observe($(id), 'click', SBMM.drawWidget, false);
			});

		$('financials-call', 'technology-call', 'energy-call', 'diversified-call').each(
			function(id, index) {
				Event.observe($(id), 'click', SBMM.doTemplate, false);
			});

		Event.observe($('quick-search-btn'), 'click', SBMM.doGetPress, false);
		Event.observe($('quick-search-text'), 'keyup', SBMM.doKeyIntercept, false);
		Event.observe($('checkbox-info'), 'click', SBMM.boxError, false);
		Event.observe($('checkbox-news'), 'click', SBMM.boxError, false);
		Event.observe($('checkbox-twits'), 'click', SBMM.boxError, false);
		Event.observe($('checkbox-fundamentals'), 'click', SBMM.boxError, false);
		Event.observe($('checkbox-chart'), 'click', SBMM.boxError, false);

		Event.observe(window, 'beforeunload', SBMM.processExit, false);

		var handlers = {
			onCreate: function(w) {
				$('indicator').show();
			},

			onComplete: function(w) {
				$('indicator').hide();
			}
		};

		Ajax.Responders.register(handlers);
	},

	processExit: function(e) {
		var th = "";
		for (i = 0; i < SBMM.ticker_array.length; i++) {
			var quote = SBMM.ticker_array[i];
			th += quote.serialize() + "!";
		}
	
		SBMM.setCookie('t-hist', th);
		SBMM.doSaveSession();

		e.returnValue = "Sessions are saved for logged in users.";
	},

	startClock: function() {
		var current = new Date($F('server-time'));
		var mn = new Array("January", "February","March","April","May","June","July","August","September","October","November","December")

		$('date-display').innerHTML = mn[current.getMonth()] + " " + current.getDate() + ", " + current.getFullYear();;

		if ( (current.getDay() == 0) || (current.getDay() == 6) ) {
			$('market-status').innerHTML = "US Market Closed";
			$('market-status').addClassName("red");
		} else if ( (current.getHours() >= 9) && (current.getHours() < 16) ) {
			if (current.getHours() == 9) {
				if (current.getMinutes() >= 30)  {
					$('market-status').innerHTML = "US Market Open";
					$('market-status').addClassName("green");
				} else {
					$('market-status').innerHTML = "US Market Closed";
					$('market-status').addClassName("red");
				}
			} else {
				$('market-status').innerHTML = "US Market Open";
				$('market-status').addClassName("green");
			}
		} else {
			$('market-status').innerHTML = "US Market Closed";
			$('market-status').addClassName("red");
		}

		SBMM.h = current.getHours();
		SBMM.m = current.getMinutes();
		SBMM.tod = ( current.getHours() < 12 ) ? "AM" : "PM";
		
		SBMM.h = ( SBMM.h > 12 ) ? SBMM.h - 12 : SBMM.h;
		SBMM.h = ( SBMM.h == 0 ) ? 12 : SBMM.h;

		hour = SBMM.h + '';	mins = SBMM.m + '';
		if (hour.length == 1) { hour = "0" + hour; } if (mins.length == 1) { mins = "0" + mins; }
		$('clock-display').innerHTML = hour + '<blink>:</blink>' + mins + " " + SBMM.tod + " EST";

		setInterval(function() {
			var mins;var hour;

			SBMM.m++;
			if (SBMM.m == 60) {
				SBMM.m = 0;
				SBMM.h++;
				if (SBMM.h == 13) {	SBMM.h = 1;	if (SBMM.tod == 'AM'){SBMM.tod = 'PM' } else {SBMM.tod = 'AM';}}
			}

			hour = SBMM.h + '';	mins = SBMM.m + '';
			if (hour.length == 1) { hour = "0" + hour; } if (mins.length == 1) { mins = "0" + mins; }

			$('clock-display').innerHTML = hour + '<blink>:</blink>' + mins + " " + SBMM.tod + " EST";

			if ( (SBMM.tod == 'PM') && (SBMM.h == 4) ) {
				if ($('market-status').innerHTML == "US Market Open") {
					$('market-status').innerHTML = "US Market Closed";
					$('market-status').addClassName("red");
				}
			}
			
			if ( (SBMM.tod == 'AM') && (SBMM.h == 9) && (SBMM.m == 30) ) {
				if ($('market-status').innerHTML == "US Market Closed") {
					$('market-status').innerHTML = "US Market Open";
					$('market-status').addClassName("green");
				}
			}
		}, 60 * 1000);
	},

	doSaveSession: function() {
		if (SBMM.logged_in == true) {
			$('save-session-msg').innerHTML = "Saving Session";
			$('save-session-msg').removeClassName = "green";
			$('save-session-msg').show();

			SBMM.doServerRequest(SBMM.loginUrl, '04&w=' + SBMM.recordWindows(), function() { $('save-session-msg').innerHTML = "Session Saved"; $('save-session-msg').addClassName("green"); setTimeout( function() { Effect.Fade($('save-session-msg')); }, 3000);});
			//new Ajax.Request(SBMM.loginUrl, { method: 'post', parameters: 'actionName=04&w=' + SBMM.recordWindows(), onComplete: function() { $('save-session-msg').innerHTML = "Session Saved"; $('save-session-msg').addClassName("green"); setTimeout( function() { Effect.Fade($('save-session-msg')); }, 3000);} });
		} else {
			SBMM.displayLogin('l', 's');
		}
	},

	hideRealTimeNews: function() {
		$('realtime-news-label').hide();
		$('realtime-news-entry').hide();

		$('hide-show-realtime-news').removeClassName('rt-hide-button');
		$('hide-show-realtime-news').addClassName('rt-show-button');

		$('hide-show-realtime-news').onclick = SBMM.showRealTimeNews;
		clearTimeout(SBMM.autoStockUpdateId['rt-news']);

		SBMM.rtCurrent = -1;
	},

	showRealTimeNews: function() {
		$('realtime-news-label').show();
		$('realtime-news-entry').show();

		$('hide-show-realtime-news').removeClassName('rt-show-button');
		$('hide-show-realtime-news').addClassName('rt-hide-button');
		$('hide-show-realtime-news').onclick = SBMM.hideRealTimeNews;

		SBMM.rtCurrent = 0;
		SBMM.switchRealTimeNews();
	},

	drawLatestNews: function() {
		pageTracker._trackEvent("Window", "Latest News");
		SBMM.openPrototypeWindow('latest-news', 'Latest News', true, 250, 500, 240, 480, true);

		$('latest-news-div').innerHTML = '<table width="100%" align="center" cellpadding="5" cellspacing="0">' + SBMM.rtContent + '</table>';
	},

	doRealTimeNews: function(r) {
		var rss = eval(r.responseText);

		for (var i = 0; i < rss.rss.length; i++) {
			var item = rss.rss[i];
			var odd = "";
			if ( i % 2 == 0) { odd = " class='tr-odd'"; }

			var m = "<a href=\"news?t=" + item.title + "&l=" + item.link + "\" target=\"_blank\">" + item.title + "<\/a>";
			SBMM.rtContent += '<tr' + odd + '><td>' + SBMM.prettyDate(item.date) + '</td><td><a target="_blank" href="' + item.link + '"><img alt=\"external link\" src="images/m-icons/external.png"/> ' + item.title + '</a></td></tr>';
			SBMM.rtArray.push(m);
		}

		SBMM.switchRealTimeNews();
	},

	switchRealTimeNews: function() {
		if (SBMM.rtCurrent == -1) { return; }
		if (SBMM.rtToggle) {
			// Effect.SlideUp('realtime-news-entry', { duration: 0.3 });
			SBMM.rtToggle = false;
			SBMM.autoStockUpdateId['rt-news'] = setTimeout(SBMM.switchRealTimeNews, 2000);
		} else {
			if (SBMM.rtCurrent == (SBMM.rtArray.length - 1)) { SBMM.rtCurrent = 0; }
			$('realtime-news-entry').innerHTML = SBMM.rtArray[SBMM.rtCurrent];
			SBMM.rtCurrent++;
			SBMM.rtToggle = true;
			 // Effect.SlideDown('realtime-news-entry', { duration: 0.3 });
			SBMM.autoStockUpdateId['rt-news'] = setTimeout(SBMM.switchRealTimeNews, 7 * 1000);
		}
	},

	boxError: function () {
		if ( (!$F('checkbox-info')) && (!$F('checkbox-news')) && (!$F('checkbox-twits')) && (!$F('checkbox-fundamentals')) && (!$F('checkbox-chart')) ) {
			$('checkbox-error').innerHTML = 'Check at Least One:';
			$('checkbox-error').show();
		} else {
			$('checkbox-error').hide();
		}
	},

	doGetPress: function() {
		if ( ($('quick-search-text').value !== '') && ($('quick-search-text').value !== 'TYPE STOCK..') ) {

			var v = $('quick-search-text').value.split(" ");

			if (v[0] == 'info') {
				for (var i = 1; i < v.length; i++) {
					try {	UI.defaultWM.getWindow("tstock-" + v[i].toUpperCase()).activate(); } catch (e) {}
					SBMM.doStockRetrieve(v[i]);
				}

				$('quick-search-text').value = '';
			} else if (v[0] == 'news') {
				for (var i = 1; i < v.length; i++) {
					SBMM.doServerRequest(SBMM.controlUrl, '3&symbol=' + v[i], SBMM.drawStockNews);
				}

				$('quick-search-text').value = '';
			} else if (v[0] == 'twits') {
				for (var i = 1; i < v.length; i++) {
					SBMM.doStockTwits(v[i]);
				}

				$('quick-search-text').value = '';
			}	else if (v[0] == 'fund') {
				for (var i = 1; i < v.length; i++) {
					SBMM.drawFundamentals(v[i]);
				}

				$('quick-search-text').value = '';
			} else if (v[0] == 'chart') {
				for (var i = 1; i < v.length; i++) {
					SBMM.drawChart(v[i]);
				}

				$('quick-search-text').value = '';
			} else {
				for (var i = 0; i < v.length; i++) {
					if ($F('checkbox-info')) {
						try {	UI.defaultWM.getWindow("tstock-" + v[i].toUpperCase()).activate(); } catch (e) {}
						SBMM.doStockRetrieve(v[i]);
	
						SBMM.setCookie('c-info', 'on');
					} else {
						SBMM.setCookie('c-info', 'off');
					}
	
					if ($F('checkbox-news')) {
						SBMM.doServerRequest(SBMM.controlUrl, '3&symbol=' + v[i], SBMM.drawStockNews);
						SBMM.setCookie('c-news', 'on');
					} else {
						SBMM.setCookie('c-news', 'off');
					}

					if ($F('checkbox-twits')) {
						SBMM.doStockTwits(v[i]);
						SBMM.setCookie('c-twits', 'on');
					} else {
						SBMM.setCookie('c-twits', 'off');
					}
	
					if ($F('checkbox-fundamentals')) {
						SBMM.drawFundamentals(v[i]);
						SBMM.setCookie('c-fund', 'on');
					} else {
						SBMM.setCookie('c-fund', 'off');
					}
	
					if ($F('checkbox-chart')) {
						SBMM.drawChart(v[i]);
						SBMM.setCookie('c-chart', 'on');
					} else {
						SBMM.setCookie('c-chart', 'off');
					}
	
					SBMM.addToTickerHistory(v[i]);
	
					$('quick-search-text').value = '';
				}
			}
		}
	},

	doTemplate: function(e) {
		if (!SBMM.resetDesktop()) {
			return;
		}

		if (e.target.id == 'financials-call') {
			SBMM.addToTickerHistory("BAC");
			SBMM.addToTickerHistory("WFC");
			SBMM.addToTickerHistory("GS");
			SBMM.addToTickerHistory("JPM");
			SBMM.addToTickerHistory("C");
			SBMM.addToTickerHistory("MS");

			SBMM.reopenWindows("({ windows : [{id: 'tstock-BAC', width:200, height:255, left:585, top:45, minimized:false},{id: 'fundamentals-BAC', width:200, height:135, left:585, top:315, minimized:false},{id: 'tstock-WFC', width:200, height:255, left:375, top:45, minimized:false},{id: 'fundamentals-WFC', width:200, height:135, left:375, top:315, minimized:false},{id: 'fundamentals-GS', width:200, height:135, left:165, top:315, minimized:false},{id: 'tstock-MS', width:200, height:255, left:375, top:465, minimized:false},{id: 'tstock-JPM', width:200, height:255, left:165, top:465, minimized:false},{id: 'tstock-C', width:200, height:255, left:795, top:45, minimized:false},{id: 'fundamentals-C', width:200, height:135, left:795, top:315, minimized:false},{id: 'fundamentals-JPM', width:200, height:135, left:165, top:735, minimized:false},{id: 'world-index', width:225, height:405, left:1005, top:45, minimized:false},{id: 'mheadlines', width:645, height:405, left:585, top:465, minimized:false},{id: 'tstock-GS', width:200, height:255, left:165, top:45, minimized:false},{id: 'fundamentals-MS', width:200, height:135, left:375, top:735, minimized:false},{id: 'snews-GS', width:525, height:255, left:165, top:885, minimized:false},{id: 'snews-MS', width:525, height:255, left:705, top:885, minimized:false}]})");
			
			pageTracker._trackEvent("Template", "Financials");
		} else if (e.target.id == 'technology-call') {
			SBMM.addToTickerHistory("DELL");
			SBMM.addToTickerHistory("YHOO");
			SBMM.addToTickerHistory("MSFT");
			SBMM.addToTickerHistory("GOOG");
			SBMM.addToTickerHistory("INTC");
			SBMM.addToTickerHistory("RIMM");

			SBMM.reopenWindows("({ windows : [{id: 'thistory', width:200, height:390, left:165, top:450, minimized:false},{id: 'tstock-AAPL', width:200, height:255, left:375, top:45, minimized:false},{id: 'tstock-DELL', width:200, height:255, left:585, top:45, minimized:false},{id: 'tstock-YHOO', width:200, height:255, left:795, top:45, minimized:false},{id: 'tstock-RIMM', width:200, height:255, left:1005, top:45, minimized:false},{id: 'tstock-MSFT', width:200, height:255, left:1005, top:315, minimized:false},{id: 'tstock-GOOG', width:200, height:255, left:1005, top:585, minimized:false},{id: 'mheadlines', width:615, height:525, left:375, top:315, minimized:false},{id: 'tstock-INTC', width:200, height:255, left:165, top:45, minimized:false},{id: 'us-index', width:200, height:120, left:165, top:315, minimized:false}]})");
			pageTracker._trackEvent("Template", "Technology");
		} else if (e.target.id == 'energy-call') {
			SBMM.addToTickerHistory("BP");
			SBMM.addToTickerHistory("XOM");
			SBMM.addToTickerHistory("HAL");
			SBMM.addToTickerHistory("BTU");
			SBMM.addToTickerHistory("CVX");
			SBMM.addToTickerHistory("COP");
			SBMM.addToTickerHistory("SLB");

			SBMM.reopenWindows("({ windows : [{id: 'tstock-HAL', width:200, height:255, left:165, top:315, minimized:false},{id: 'tstock-BP', width:200, height:255, left:165, top:585, minimized:false},{id: 'tstock-XOM', width:200, height:255, left:165, top:45, minimized:false},{id: 'snews-XOM', width:330, height:255, left:375, top:45, minimized:false},{id: 'snews-HAL', width:330, height:255, left:375, top:315, minimized:false},{id: 'snews-BTU', width:330, height:255, left:930, top:315, minimized:false},{id: 'snews-BP', width:330, height:255, left:375, top:585, minimized:false},{id: 'tstock-CVX', width:200, height:255, left:720, top:585, minimized:false},{id: 'snews-CVX', width:330, height:255, left:930, top:585, minimized:false},{id: 'tstock-COP', width:200, height:255, left:165, top:855, minimized:false},{id: 'snews-COP', width:330, height:255, left:375, top:855, minimized:false},{id: 'tstock-SLB', width:200, height:255, left:720, top:855, minimized:false},{id: 'snews-SLB', width:330, height:255, left:930, top:855, minimized:false},{id: 'tstock-BTU', width:200, height:255, left:720, top:315, minimized:false},{id: 'energy-watch', width:200, height:120, left:1065, top:45, minimized:false},{id: 'us-index', width:200, height:120, left:1065, top:180, minimized:false},{id: 'mheadlines', width:330, height:255, left:720, top:45, minimized:false}]})");
			pageTracker._trackEvent("Template", "Energy");
		} else if (e.target.id == 'diversified-call') {
			SBMM.addToTickerHistory("BP");
			SBMM.addToTickerHistory("JNJ");
			SBMM.addToTickerHistory("WAB");
			SBMM.addToTickerHistory("ACM");
			SBMM.addToTickerHistory("GOOG");
			SBMM.addToTickerHistory("GS");

			SBMM.reopenWindows("({ windows : [{id: 'thistory', width:200, height:270, left:1005, top:450, minimized:false},{id: 'tstock-BP', width:200, height:255, left:165, top:45, minimized:false},{id: 'us-index', width:200, height:120, left:1005, top:315, minimized:false},{id: 'tstock-JNJ', width:200, height:255, left:1005, top:45, minimized:false},{id: 'mheadlines', width:615, height:255, left:375, top:45, minimized:false},{id: 'tstock-WAB', width:200, height:255, left:165, top:315, minimized:false},{id: 'fundamentals-WAB', width:200, height:135, left:165, top:585, minimized:false},{id: 'tstock-ACM', width:200, height:255, left:375, top:315, minimized:false},{id: 'fundamentals-ACM', width:200, height:135, left:375, top:585, minimized:false},{id: 'tstock-GS', width:200, height:255, left:585, top:315, minimized:false},{id: 'fundamentals-GS', width:200, height:135, left:585, top:585, minimized:false},{id: 'tstock-GOOG', width:200, height:255, left:795, top:315, minimized:false},{id: 'fundamentals-GOOG', width:200, height:135, left:795, top:585, minimized:false}]})");
			
			pageTracker._trackEvent("Template", "Diversified");
		}
	},

	drawWidget: function(e) {
		// draw monitor widgets
		if (e.target.id == 'us-watch-call') {
			SBMM.doServerRequest(SBMM.controlUrl, '1', SBMM.drawWidgetMarketWatch);
			pageTracker._trackEvent("Widget", "US Market");
		} else if (e.target.id == 'world-watch-call') {
			SBMM.doServerRequest(SBMM.controlUrl, '9', SBMM.drawWidgetWorldWatch);
			pageTracker._trackEvent("Widget", "World Market");
		} else if (e.target.id == 'mortgage-watch-call') {
			SBMM.drawWidgetMortgageWatch();
			pageTracker._trackEvent("Widget", "Mortgage");
		} else if (e.target.id == 'currency-watch-call') {
			SBMM.doServerRequest(SBMM.controlUrl, '11', SBMM.drawWidgetCurrencyWatch);
			pageTracker._trackEvent("Widget", "Currency");
		} else if (e.target.id == 'treasury-watch-call') {
			SBMM.doServerRequest(SBMM.controlUrl, '14', SBMM.drawWidgetTreasuryWatch);
			pageTracker._trackEvent("Widget", "Treasury");
		} else if (e.target.id == 'energy-watch-call') {
			SBMM.doServerRequest(SBMM.controlUrl, '12&x=e', SBMM.drawWidgetEnergyCommoditiesWatch);
			pageTracker._trackEvent("Widget", "Energy Commodities");
		} else if (e.target.id == 'etf-viewer') {
			SBMM.doServerRequest(SBMM.controlUrl, '211&u=ETFs', SBMM.drawWidgetETF);
			pageTracker._trackEvent("Widget", "ETF Viewer");
		} else if (e.target.id == 'twitter-top') {
			SBMM.doTweeterMostDiscussedTickers();
			pageTracker._trackEvent("Widget", "Most Discussed Twitter Tickers");
		} else if (e.target.id == 'metal-watch-call') {
			SBMM.doServerRequest(SBMM.controlUrl, '12&x=m', SBMM.drawWidgetMetalCommoditiesWatch);
			pageTracker._trackEvent("Widget", "Metal Commodities");
		} else if (e.target.id == 'grain-watch-call') {
			SBMM.doServerRequest(SBMM.controlUrl, '12&x=g', SBMM.drawWidgetGrainCommoditiesWatch);
			pageTracker._trackEvent("Widget", "Grain Commodities");
		} else if (e.target.id == 'livestock-watch-call') {
			SBMM.doServerRequest(SBMM.controlUrl, '12&x=l', SBMM.drawWidgetLivestockCommoditiesWatch);
			pageTracker._trackEvent("Widget", "Livestock Commodities");
		} else if (e.target.id == 'soft-watch-call') {
			SBMM.doServerRequest(SBMM.controlUrl, '12&x=s', SBMM.drawWidgetSoftCommoditiesWatch);
			pageTracker._trackEvent("Widget", "Soft Commodities");
		}
	},

	etfSorter: function(a, b) {
		return a.quote[0].ticker.toUpperCase() > b.quote[0].ticker.toUpperCase();
	},

	drawWidgetETF: function(r) {
		clearInterval(SBMM.autoStockUpdateId['etfviewer']);

		var p = eval(r.responseText);
		p = p.sort(SBMM.etfSorter);

		if (!$('etfviewer-div') || ($('etfviewer-div').innerHTML == '')) {
			SBMM.openPrototypeWindow('etfviewer', 'ETF Viewer', true, 250, 500, 240, 210, true);
			UI.defaultWM.getWindow('etfviewer').observe("destroyed", function(o) {clearInterval(SBMM.autoStockUpdateId['etfviewer']);});
			$('etfviewer-div').innerHTML = '<table id="etf-viewer_table" style="width: 100%;" cellspacing="0" cellpadding="2"><thead><tr id="table-captions"><td>ETF</td><td>Last</td><td>Range</td><td colspan="2" align="center">Change</td></tr></thead><tbody id="etf-viewer_body"></tbody></table>';
		}

		for (i = 0; i < p.length; i++) {
			var changeClass = "green";
			if (p[i].quote[0].change < 0) {
				changeClass = "red";
			}

			var odd = "";
			if ( i % 2 == 0) { odd = " class='tr-odd'"; }

			var ticker = p[i].quote[0].ticker.toUpperCase();

			if (!$("etf-viewer-entry_" + ticker)) {
				var e = '<tr ' + odd + ' id="etf-viewer-entry_' + ticker + '"><td><b><a href="#" onclick="SBMM.doStockRetrieve(\'' + ticker + '\');return false;">' + ticker + '</a></b></td><td><span id="etf-viewer-entry_'+ticker+'_lt">' + p[i].quote[0].current + '</span></td><td><span id="etf-viewer-entry_'+ticker+'_range">'+p[i].quote[0].low + "-" + p[i].quote[0].high + '</span></td><td><span id="etf-viewer-entry_' + ticker + '_change" class="' + changeClass + '">' + p[i].quote[0].change + '</span></td></tr>'
				// <td><span id="etf-viewer-entry_' + ticker + '_percent" class="' + changeClass + '">' + Math.round(((p[i].quote[0].change / p[i].quote[0].open) * 100) * 100)/100 + '</span>%</td>
				
				Element.insert($('etf-viewer_body'), {bottom: e});
				if (p[i].quote[0].marketOpen !== 'true')
					marketOpen = false;
			} else {
				// updating.
				$("etf-viewer-entry_" + ticker + "_range").innerHTML = p[i].quote[0].low + "-" + p[i].quote[0].high;
				new Effect.CashRegister("etf-viewer-entry_" + ticker + "_lt", p[i].quote[0].current);
				new Effect.CashRegister("etf-viewer-entry_" + ticker + "_change", p[i].quote[0].change);
				// new Effect.CashRegister("etf-viewer-entry_" + ticker + '_percent', (p[i].quote[0].change / p[i].quote[0].open) * 100);
			}
		}

		SBMM.autoStockUpdateId['etfviewer'] = setInterval(function() {
				SBMM.doServerRequest(SBMM.controlUrl, '211&u=ETFs', SBMM.drawWidgetETF);
			}, 2 * 60 * 1000);
	},

	drawWidgetTreasuryWatch: function(r) {
		clearInterval(SBMM.autoStockUpdateId['com-treasury']);
		var terms = new Array('w13', 'y5', 'y10', 'y30');
		var q = eval(r.responseText);

		if (!$('treasury-watch-div') || ($('treasury-watch-div').innerHTML == '')) {
			SBMM.openPrototypeWindow('treasury-watch', 'Treasury Monitor', true, 250, 500, 120, 220, true);
			UI.defaultWM.getWindow('treasury-watch').observe("destroyed", function(o) {clearInterval(SBMM.autoStockUpdateId['com-treasury']);});
			$('treasury-watch-div').innerHTML = "<table cellspacing=\"0\" cellpadding=\"3\" width=\"100%\"><tr class=\"table-captions\"><td style=\"width:40%;\">Bond Term<\/td><td>Last<\/td><td>Change<\/td><\/tr><tbody><tr><td><a onclick=\"SBMM.doStockRetrieve('^IRX'); return false;\" href=\"#\">13 Week<\/a><\/td><td class=\"data_response\"><div id=\"w13_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"w13_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><a onclick=\"SBMM.doStockRetrieve('^FVX'); return false;\" href=\"#\">5 Year<\/a><\/td><td class=\"data_response\"><div id=\"y5_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"y5_change\">0.0<\/div><\/td><\/tr><tr><td><a onclick=\"SBMM.doStockRetrieve('^TNX'); return false;\" href=\"#\">10 Year<\/a><\/td><td class=\"data_response\"><div id=\"y10_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"y10_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><a onclick=\"SBMM.doStockRetrieve('^TYX'); return false;\" href=\"#\">30 Year<\/a><\/td><td class=\"data_response\"><div id=\"y30_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"y30_change\">0.0<\/div><\/td><\/tr><\/tbody><\/table>";
		}

		for (var i = 0; i < terms.length; i++) {
			var c = terms[i];
			var d = q[i];
 
			var changeClass = "green";
			if (d.change < 0) { changeClass = "red"; }
			if (d.change == 0) { changeClass = ""; }
			$(c + '_change').className = changeClass;
			new Effect.CashRegister(c + '_current', d.current);	
			new Effect.CashRegister(c + '_change', d.change);
		}

		SBMM.autoStockUpdateId['com-treasury'] = setInterval(function() {
				SBMM.doServerRequest(SBMM.controlUrl, '14', SBMM.drawWidgetTreasuryWatch);
			}, 5 * 60 * 1000);
	},

	drawWidgetEnergyCommoditiesWatch: function(r) {
		clearInterval(SBMM.autoStockUpdateId['com-energies']);
		var commodities = new Array('cl', 'ho', 'ng', 'pn');
		var q = eval(r.responseText);

		if (!$('energy-watch-div') || ($('energy-watch-div').innerHTML == '')) {
			SBMM.openPrototypeWindow('energy-watch', 'Energy Monitor', true, 250, 500, 120, 220, true);
			UI.defaultWM.getWindow('energy-watch').observe("destroyed", function(o) {clearInterval(SBMM.autoStockUpdateId['com-energies']);});
			$('energy-watch-div').innerHTML = "<table cellspacing=\"0\" cellpadding=\"3\" width=\"100%\"><tr class=\"table-captions\"><td style=\"width:40%;\">Commodity<\/td><td>Last<\/td><td>Change<\/td><\/tr><tbody><tr><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['cl'] + "'); return false;\" href=\"#\">Crude Oil<\/a><\/td><td class=\"data_response\"><div id=\"cl_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"cl_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['ho'] + "'); return false;\" href=\"#\">Heating Oil<\/a><\/td><td class=\"data_response\"><div id=\"ho_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"ho_change\">0.0<\/div><\/td><\/tr><tr><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['ng'] + "'); return false;\" href=\"#\">Natural Gas<\/a><\/td><td class=\"data_response\"><div id=\"ng_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"ng_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['pn'] + "'); return false;\" href=\"#\">Propane<\/a><\/td><td class=\"data_response\"><div id=\"pn_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"pn_change\">0.0<\/div><\/td><\/tr><\/tbody><\/table>";
		}

		for (var i = 0; i < commodities.length; i++) {
			var c = commodities[i];
			var d = q[i+1];
 
			var changeClass = "green";
			if (d.change < 0) { changeClass = "red"; }
			if (d.change == 0) { changeClass = ""; }
			$(c + '_change').className = changeClass;
			new Effect.CashRegister(c + '_current', d.current);	
			new Effect.CashRegister(c + '_change', d.change);
		}

		SBMM.autoStockUpdateId['com-energies'] = setInterval(function() {
				SBMM.doServerRequest(SBMM.controlUrl, '12&x=e', SBMM.drawWidgetEnergyCommoditiesWatch);
			}, 5 * 60 * 1000);
	},

	drawWidgetMetalCommoditiesWatch: function(r) {
		clearInterval(SBMM.autoStockUpdateId['com-metals']);
		var commodities = new Array('pl', 'pa', 'al', 'hg', 'gc', 'si');
		var q = eval(r.responseText);

		if (!$('metal-watch-div') || ($('metal-watch-div').innerHTML == '')) {
			SBMM.openPrototypeWindow('metal-watch', 'Metal Monitor', true, 250, 500, 150, 220, true);
			UI.defaultWM.getWindow('metal-watch').observe("destroyed", function(o) {clearInterval(SBMM.autoStockUpdateId['com-metals']);});
			$('metal-watch-div').innerHTML = "<table cellspacing=\"0\" cellpadding=\"3\" width=\"100%\"><tr class=\"table-captions\"><td style=\"width:40%;\">Commodity<\/td><td>Last<\/td><td>Change<\/td><\/tr><tbody><tr><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['al'] + "'); return false;\" href=\"#\">Aluminium<\/a><\/td><td class=\"data_response\"><div id=\"al_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"al_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['hg'] + "'); return false;\" href=\"#\">Copper<\/a><\/td><td class=\"data_response\"><div id=\"hg_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"hg_change\">0.0<\/div><\/td><\/tr><tr><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['gc'] + "'); return false;\" href=\"#\">Gold<\/a><\/td><td class=\"data_response\"><div id=\"gc_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"gc_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['si'] + "'); return false;\" href=\"#\">Silver<\/a><\/td><td class=\"data_response\"><div id=\"si_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"si_change\">0.0<\/div><\/td><\/tr><tr><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['pa'] + "'); return false;\" href=\"#\">Palladium<\/a><\/td><td class=\"data_response\"><div id=\"pa_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"pa_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['pl'] + "'); return false;\" href=\"#\">Platinum<\/a><\/td><td class=\"data_response\"><div id=\"pl_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"pl_change\">0.0<\/div><\/td><\/tr><\/tbody><\/table>";
		}

		for (var i = 0; i < commodities.length; i++) {
			var c = commodities[i];
			var d = q[i+1];
 
			var changeClass = "green";
			if (d.change < 0) { changeClass = "red"; }
			if (d.change == 0) { changeClass = ""; }
			$(c + '_change').className = changeClass;
			new Effect.CashRegister(c + '_current', d.current);	
			new Effect.CashRegister(c + '_change', d.change);
		}

		SBMM.autoStockUpdateId['com-metals'] = setInterval(function() {
				SBMM.doServerRequest(SBMM.controlUrl, '12&x=m', SBMM.drawWidgetMetalCommoditiesWatch);
			}, 5 * 60 * 1000);
	},

	drawWidgetGrainCommoditiesWatch: function(r) {
		clearInterval(SBMM.autoStockUpdateId['com-grains']);
		var commodities = new Array('c', 'o', 'rr', 's');
		var q = eval(r.responseText);

		if (!$('grain-watch-div') || ($('grain-watch-div').innerHTML == '')) {
			SBMM.openPrototypeWindow('grain-watch', 'Grain Monitor', true, 250, 500, 120, 220, true);
			UI.defaultWM.getWindow('grain-watch').observe("destroyed", function(o) {clearInterval(SBMM.autoStockUpdateId['com-grains']);});
			$('grain-watch-div').innerHTML = "<table cellspacing=\"0\" cellpadding=\"3\" width=\"100%\"><tr class=\"table-captions\"><td style=\"width:40%;\">Commodity<\/td><td>Last<\/td><td>Change<\/td><\/tr><tbody><tr><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['c'] + "'); return false;\" href=\"#\">Corn<\/a><\/td><td class=\"data_response\"><div id=\"c_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"c_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['o'] + "'); return false;\" href=\"#\">Oats<\/a><\/td><td class=\"data_response\"><div id=\"o_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"o_change\">0.0<\/div><\/td><\/tr><tr><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['rr'] + "'); return false;\" href=\"#\">Rice<\/a><\/td><td class=\"data_response\"><div id=\"rr_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"rr_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['s'] + "'); return false;\" href=\"#\">Soybeans<\/a><\/td><td class=\"data_response\"><div id=\"s_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"s_change\">0.0<\/div><\/td><\/tr><\/tbody><\/table>";
		}

		for (var i = 0; i < commodities.length; i++) {
			var c = commodities[i];
			var d = q[i+1];
 
			var changeClass = "green";
			if (d.change < 0) { changeClass = "red"; }
			if (d.change == 0) { changeClass = ""; }
			$(c + '_change').className = changeClass;
			new Effect.CashRegister(c + '_current', d.current);	
			new Effect.CashRegister(c + '_change', d.change);
		}

		SBMM.autoStockUpdateId['com-grains'] = setInterval(function() {
				SBMM.doServerRequest(SBMM.controlUrl, '12&x=g', SBMM.drawWidgetGrainCommoditiesWatch);
			}, 5 * 60 * 1000);
	},

	drawWidgetLivestockCommoditiesWatch: function(r) {
		clearInterval(SBMM.autoStockUpdateId['com-livestock']);
		var commodities = new Array('fc', 'pb', 'lh', 'lc');
		var q = eval(r.responseText);

		if (!$('livestock-watch-div') || ($('livestock-watch-div').innerHTML == '')) {
			SBMM.openPrototypeWindow('livestock-watch', 'Livestock Monitor', true, 250, 500, 120, 220, true);
			UI.defaultWM.getWindow('livestock-watch').observe("destroyed", function(o) {clearInterval(SBMM.autoStockUpdateId['com-livestock']);});
			$('livestock-watch-div').innerHTML = "<table cellspacing=\"0\" cellpadding=\"3\" width=\"100%\"><tr class=\"table-captions\"><td style=\"width:40%;\">Commodity<\/td><td>Last<\/td><td>Change<\/td><\/tr><tbody><tr><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['fc'] + "'); return false;\" href=\"#\">Feeder Cattle<\/a><\/td><td class=\"data_response\"><div id=\"fc_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"fc_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['pb'] + "'); return false;\" href=\"#\">Pork Bellies<\/a><\/td><td class=\"data_response\"><div id=\"pb_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"pb_change\">0.0<\/div><\/td><\/tr><tr><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['lh'] + "'); return false;\" href=\"#\">Lean Hogs<\/a><\/td><td class=\"data_response\"><div id=\"lh_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"lh_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['lc'] + "'); return false;\" href=\"#\">Live Cattle<\/a><\/td><td class=\"data_response\"><div id=\"lc_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"lc_change\">0.0<\/div><\/td><\/tr><\/tbody><\/table>";
		}

		for (var i = 0; i < commodities.length; i++) {
			var c = commodities[i];
			var d = q[i+1];
 
			var changeClass = "green";
			if (d.change < 0) { changeClass = "red"; }
			if (d.change == 0) { changeClass = ""; }
			$(c + '_change').className = changeClass;
			new Effect.CashRegister(c + '_current', d.current);	
			new Effect.CashRegister(c + '_change', d.change);
		}

		SBMM.autoStockUpdateId['com-livestock'] = setInterval(function() {
				SBMM.doServerRequest(SBMM.controlUrl, '12&x=l', SBMM.drawWidgetLivestockCommoditiesWatch);
			}, 5 * 60 * 1000);
	},

	drawWidgetSoftCommoditiesWatch: function(r) {
		clearInterval(SBMM.autoStockUpdateId['com-softs']);
		var commodities = new Array('sb', 'oj', 'cc', 'kc', 'ct', 'lb');
		var q = eval(r.responseText);

		if (!$('soft-watch-div') || ($('soft-watch-div').innerHTML == '')) {
			SBMM.openPrototypeWindow('soft-watch', 'Softs Monitor', true, 250, 500, 150, 220, true);
			UI.defaultWM.getWindow('soft-watch').observe("destroyed", function(o) {clearInterval(SBMM.autoStockUpdateId['com-softs']);});
			$('soft-watch-div').innerHTML = "<table cellspacing=\"0\" cellpadding=\"3\" width=\"100%\"><tr class=\"table-captions\"><td style=\"width:40%;\">Commodity<\/td><td>Last<\/td><td>Change<\/td><\/tr><tbody><tr><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['cc'] + "'); return false;\" href=\"#\">Cocoa<\/a><\/td><td class=\"data_response\"><div id=\"cc_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"cc_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['kc'] + "'); return false;\" href=\"#\">Coffee<\/a><\/td><td class=\"data_response\"><div id=\"kc_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"kc_change\">0.0<\/div><\/td><\/tr><tr><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['ct'] + "'); return false;\" href=\"#\">Cotton<\/a><\/td><td class=\"data_response\"><div id=\"ct_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"ct_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['lb'] + "'); return false;\" href=\"#\">Lumber<\/a><\/td><td class=\"data_response\"><div id=\"lb_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"lb_change\">0.0<\/div><\/td><\/tr><tr><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['oj'] + "'); return false;\" href=\"#\">Orange Juice<\/a><\/td><td class=\"data_response\"><div id=\"oj_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"oj_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><a onclick=\"SBMM.doStockRetrieve('" + q[0]['sb'] + "'); return false;\" href=\"#\">Sugar<\/a><\/td><td class=\"data_response\"><div id=\"sb_current\">0.0<\/div><\/td><td class=\"data_response\" style=\"padding-left:3px;\"><div id=\"sb_change\">0.0<\/div><\/td><\/tr><\/tbody><\/table>";
		}

		for (var i = 0; i < commodities.length; i++) {
			var c = commodities[i];
			var d = q[i+1];
 
			var changeClass = "green";
			if (d.change < 0) { changeClass = "red"; }
			if (d.change == 0) { changeClass = ""; }
			$(c + '_change').className = changeClass;
			new Effect.CashRegister(c + '_current', d.current);	
			new Effect.CashRegister(c + '_change', d.change);
		}

		SBMM.autoStockUpdateId['com-softs'] = setInterval(function() {
				SBMM.doServerRequest(SBMM.controlUrl, '12&x=s', SBMM.drawWidgetSoftCommoditiesWatch);
			}, 5 * 60 * 1000);
	},

	drawWidgetCurrencyWatch: function(r) {
		clearInterval(SBMM.autoStockUpdateId['currency']);
		var ta =	{'USDEUR=X':'usdeur','USDGBP=X':'usdgbp','USDCNY=X':'usdcny','EURUSD=X':'eurusd','EURCNY=X':'eurcny','EURGBP=X':'eurgbp','CNYUSD=X':'cnyusd','CNYEUR=X':'cnyeur','CNYGBP=X':'cnygbp','GBPUSD=X':'gbpusd','GBPEUR=X':'gbpeur','GBPCNY=X':'gbpcny'};
		var tr =	{'usdeur':'USDEUR=X','usdgbp':'USDGBP=X','usdcny':'USDCNY=X','eurusd':'EURUSD=X','eurcny':'EURCNY=X','eurgbp':'EURGBP=X','cnyusd':'CNYUSD=X','cnyeur':'CNYEUR=X','cnygbp':'CNYGBP=X','gbpusd':'GBPUSD=X','gbpeur':'GBPEUR=X','gbpcny':'GBPCNY=X'};
	
		var q = eval(r.responseText);

		if (!$('currency-watch-div') || ($('currency-watch-div').innerHTML == '')) {
			SBMM.openPrototypeWindow('currency-watch', 'Currency Watch', true, 250, 500, 120, 220, true);

			UI.defaultWM.getWindow('currency-watch').observe("destroyed", function(o) {clearInterval(SBMM.autoStockUpdateId['currency']);});
			$('currency-watch-div').innerHTML = "<table cellspacing=\"0\" cellpadding=\"2\" width=\"100%\"><tr class=\"table-cpations\"><td>Currency<\/td>  <td class=\"c\">USD<\/td>  <td class=\"c\">EUR<\/td>  <td class=\"c\">CNY<\/td>  <td class=\"c\">GBP<\/td>  <\/tr><tr><td>USD<\/td>  <td class=\"c\">--<\/td>  <td class=\"c\"><a href=\"#\" onclick=\"SBMM.doStockRetrieve('usdeur=x');return false;\"><span id=\"usdeur_current\">0.0<\/span><\/a><\/td>  <td class=\"c\"><a href=\"#\" onclick=\"SBMM.doStockRetrieve('usdcny=x');return false;\"><span id=\"usdcny_current\">0.0<\/span><\/a><\/td>  <td class=\"c\"><a href=\"#\" onclick=\"SBMM.doStockRetrieve('usdgbp=x');return false;\"><span id=\"usdgbp_current\">0.0<\/span><\/a><\/td>  <\/tr><tr class=\"tr-odd\"><td>EUR<\/td>  <td class=\"c\"><a href=\"#\" onclick=\"SBMM.doStockRetrieve('eurusd=x');return false;\"><span id=\"eurusd_current\">0.0<\/span><\/a><\/td>  <td class=\"c\">--<\/td>  <td class=\"c\"><a href=\"#\" onclick=\"SBMM.doStockRetrieve('eurcny=x');return false;\"><span id=\"eurcny_current\">0.0<\/span><\/a><\/td>  <td class=\"c\"><a href=\"#\" onclick=\"SBMM.doStockRetrieve('eurgbp=x');return false;\"><span id=\"eurgbp_current\">0.0<\/span><\/a><\/td>  <\/tr><tr><td>CNY<\/td>  <td class=\"c\"><a href=\"#\" onclick=\"SBMM.doStockRetrieve('cnyusd=x');return false;\"><span id=\"cnyusd_current\">0.0<\/span><\/a><\/td>  <td class=\"c\"><a href=\"#\" onclick=\"SBMM.doStockRetrieve('cnyeur=x');return false;\"><span id=\"cnyeur_current\">0.0<\/span><\/a><\/td>  <td class=\"c\">--<\/td>  <td class=\"c\"><a href=\"#\" onclick=\"SBMM.doStockRetrieve('cnygbp=x');return false;\"><span id=\"cnygbp_current\">0.0<\/span><\/a><\/td>  <\/tr><tr class=\"tr-odd\"><td>GBP<\/td>  <td class=\"c\"><a href=\"#\" onclick=\"SBMM.doStockRetrieve('gbpusd=x');return false;\"><span id=\"gbpusd_current\">0.0<\/span><\/a><\/td>  <td class=\"c\"><a href=\"#\" onclick=\"SBMM.doStockRetrieve('gbpeur=x');return false;\"><span id=\"gbpeur_current\">0.0<\/span><\/a><\/td>  <td class=\"c\"><a href=\"#\" onclick=\"SBMM.doStockRetrieve('gbpcny=x');return false;\"><span id=\"gbpcny_current\">0.0<\/span><\/a><\/td>  <td class=\"c\">--<\/td>  <\/tr><\/table>";
		}

		for (var i = 0; i < q.length; i++) {
			var c = ta[q[i].ticker];
			if (c === undefined) continue;
 
			new Effect.CashRegister(c + '_current', q[i].current);	
		}

		SBMM.autoStockUpdateId['currency'] = setInterval(function() {
				SBMM.doServerRequest(SBMM.controlUrl, '11', SBMM.drawWidgetCurrencyWatch);
			}, 5 * 60 * 1000);
	},

	drawWidgetMortgageWatch: function(r) {
		SBMM.openPrototypeWindow('mortgage-watch', 'Mortgage Watch', true, 250, 500, 165, 200, true);

		if (!$('mortgage-watch-div') || ($('mortgage-watch-div').innerHTML == '')) {
			$('mortgage-watch-div').innerHTML = '<iframe width="190" height="130" src="sbmm-mortgage.jsp" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>';
		}
	},

	drawWidgetWorldWatch: function(r) {
		clearInterval(SBMM.autoStockUpdateId['world-index']);
		var ta =	{'^AEX':'aex','^JKSE':'jkse','^NZ50':'nz50','^TWII':'twii','^MERV':'merv','^BVSP':'bvsp','^GSPTSE':'tor','^MXX':'mxx','^NSEI':'nse','^BSESN':'bse','000001.SS':'ssec','^STI':'sti','^IXIC':'nasdaq','^GSPC':'sp','^DJI':'dow','^FTSE':'ftse','^GDAXI':'dax','^FCHI':'cac','^N225':'n225','^HSI':'hsi'};
		var tr =	{'aex':'^AEX','jkse':'^JKSE','nz50':'^NZ50','twii':'^TWII','merv':'^MERV','bvsp':'^BVSP','tor':'^GSPTSE','mxx':'^MXX','nse':'^NSEI','bse':'^BSESN','ssec':'000001.SS','sti':'^STI','nasdaq':'^IXIC','sp':'^GSPC','dow':'^DJI','ftse':'^FTSE','dax':'^GDAXI','cac':'^FCHI','n225':'^N225','hsi':'^HSI'};

		var q = eval(r.responseText);

		if ( (!$('world-index-div')) || ($('world-index-div').innerHTML == '') ) {
			SBMM.openPrototypeWindow('world-index', 'World Market Watch', true, 250, 500, 405, 225, true);
			UI.defaultWM.getWindow('world-index').observe("destroyed", function(o) {clearInterval(SBMM.autoStockUpdateId['world-index']);});
			$('world-index-div').innerHTML = "<table cellspacing=\"0\" cellpadding=\"3\" width=\"100%\"><tr class=\"table-captions\"><td style=\"width:43%;\">Exchange<\/td><td>Last<\/td><td>Change<\/td><\/tr><tbody><tr><td><img alt=\"United States Stock Market\" src=\"images\/flags\/us.gif\" \/> <a id=\"dow_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^DJI');return false;\">Dow<\/a><\/td><td><div id=\"dow_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"dow_world_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><img alt=\"United States Stock Market\" src=\"images\/flags\/us.gif\" \/> <a id=\"nasdaq_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^IXIC');return false;\">Nasdaq<\/a><\/td><td><div id=\"nasdaq_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"nasdaq_world_change\">0.0<\/div><\/td><\/tr><tr><td><img alt=\"United States Stock Market\" src=\"images\/flags\/us.gif\" \/> <a id=\"sp_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^GSPC');return false;\">S &amp; P 500<\/a><\/td><td><div id=\"sp_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"sp_world_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><img alt=\"Argentina Stock Exchange\" src=\"images\/flags\/ar.gif\" \/> <a id=\"merv_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^MERV');return false;\">MerVal<\/a><\/td><td><div id=\"merv_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"merv_world_change\">0.0<\/div><\/td><\/tr><tr><td><img alt=\"Brazilian Stock Exchange\" src=\"images\/flags\/br.gif\" \/> <a id=\"bvsp_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^BVSP');return false;\">Bovespa<\/a><\/td><td><div id=\"bvsp_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"bvsp_world_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><img alt=\"Canada Stock Exchange\" src=\"images\/flags\/ca.gif\" \/> <a id=\"tor_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^GSPTSE');return false;\">TSX<\/a><\/td><td><div id=\"tor_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"tor_world_change\">0.0<\/div><\/td><\/tr><tr><td><img alt=\"Mexican Stock Exchange\" src=\"images\/flags\/mx.gif\" \/> <a id=\"mxx_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^MXX');return false;\">IPC<\/a><\/td><td><div id=\"mxx_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"mxx_world_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><img alt=\"Amsterdam Stock Exchange\" src=\"images\/flags\/nl.gif\" \/> <a id=\"aex_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^AEX');return false;\">AEX<\/a><\/td><td><div id=\"aex_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"aex_world_change\">0.0<\/div><\/td><\/tr><tr><td><img alt=\"London Stock Exchange\" src=\"images\/flags\/uk.gif\" \/> <a id=\"ftse_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^FTSE');return false;\">FTSE 100<\/a><\/td><td><div id=\"ftse_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"ftse_world_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><img alt=\"Deutch Stock Market\" src=\"images\/flags\/de.gif\" \/> <a id=\"dax_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^GDAXI');return false;\">DAX<\/a><\/td><td><div id=\"dax_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"dax_world_change\">0.0<\/div><\/td><\/tr><tr><td><img alt=\"French Stock Market\" src=\"images\/flags\/fr.gif\" \/> <a id=\"cac_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^FCHI');return false;\">CAC 40<\/a><\/td><td><div id=\"cac_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"cac_world_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><img alt=\"Japan Stock Market\" src=\"images\/flags\/jp.gif\" \/> <a id=\"n225_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^N225');return false;\">Nikkei<\/a><\/td><td><div id=\"n225_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"n225_world_change\">0.0<\/div><\/td><\/tr><tr><td><img alt=\"Hong Kong Stock Market\" src=\"images\/flags\/hk.gif\" \/> <a id=\"hsi_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^HSI');return false;\">Hang Seng<\/a><\/td><td><div id=\"hsi_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"hsi_world_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><img alt=\"China Stock Market\" src=\"images\/flags\/cn.gif\" \/> <a id=\"ssec_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('000001.SS');return false;\">Shanghai<\/a><\/td><td><div id=\"ssec_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"ssec_world_change\">0.0<\/div><\/td><\/tr><tr><td><img alt=\"Singapore Stock Market\" src=\"images\/flags\/sg.gif\" \/> <a id=\"sti_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^STI');return false;\">Straits<\/a><\/td><td><div id=\"sti_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"sti_world_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><img alt=\"Jakarta Stock Exchange\" src=\"images\/flags\/id.gif\" \/> <a id=\"jkse_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^JKSE');return false;\">Jakarta<\/a><\/td><td><div id=\"jkse_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"jkse_world_change\">0.0<\/div><\/td><\/tr><tr><td><img alt=\"New Zealand Stock Exchange\" src=\"images\/flags\/nz.gif\" \/> <a id=\"nz50_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^NZ50');return false;\">NZX 50<\/a><\/td><td><div id=\"nz50_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"nz50_world_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><img alt=\"Taiwan Stock Exchange\" src=\"images\/flags\/tw.gif\" \/> <a id=\"twii_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^TWII');return false;\">TSEC<\/a><\/td><td><div id=\"twii_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"twii_world_change\">0.0<\/div><\/td><\/tr><tr><td><img alt=\"Bombay Stock Exchange\" src=\"images\/flags\/in.gif\" \/> <a id=\"bse_world_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^BSESN');return false;\">Sensex<\/a><\/td><td><div id=\"bse_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"bse_world_change\">0.0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td><img alt=\"Indian National Stock Exchange\" src=\"images\/flags\/in.gif\" \/> <a id=\"nse_world_name\" href=\"#\" onclick=\"SBMM.doStockRetrieve('^NSEI');return false;\">Nifty<\/a><\/td><td><div id=\"nse_world_current\">0.0<\/div><\/td><td style=\"padding-left:3px;\"><div id=\"nse_world_change\">0.0<\/div><\/td><\/tr><\/tbody><\/table>";
		}

		for (var i = 0; i < q.length; i++) {
			var c = ta[q[i].ticker];
			if (c === undefined) continue;

			var changeClass = "green";
			if (q[i].change < 0) { changeClass = "red"; }
			if (q[i].change == 0) { changeClass = ""; }
			$(c + '_world_change').className = changeClass;
			new Effect.CashRegister(c + '_world_current', q[i].current);	
			new Effect.CashRegister(c + '_world_change', q[i].change);
		}

		SBMM.autoStockUpdateId['world-index'] = setInterval(function() {
				SBMM.doServerRequest(SBMM.controlUrl, '9', SBMM.drawWidgetWorldWatch);
			}, 60 * 1000);
	},

	drawWidgetMarketWatch: function(r) {
		clearInterval(SBMM.autoStockUpdateId['us-index']);
		var quote2 = eval(r.responseText);

		if (!$('us-index-div')  || ($('us-index-div').innerHTML == '')) {
			SBMM.openPrototypeWindow('us-index', 'US Indexes', true, 250, 500, 120, 200, true);
			UI.defaultWM.getWindow('us-index').observe("destroyed", function(o) {clearInterval(SBMM.autoStockUpdateId['us-index']);});

			if (quote2[0].marketOpen == 'false') {
				SBMM.market_condition = false;
			} else {
				SBMM.market_condition = true;
			}
	
			$('us-index-div').innerHTML = "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"2\"><tr class=\"table-captions\"><td>Symbol<\/td><td>Last<\/td><td>Change<\/td><\/tr>"+
				"<tr><td class=\"data_response\"><a href=\"#\" onclick=\"SBMM.doStockRetrieve('%5EDJI'); return false;\">Dow<\/a><\/td>"+
				"<td class=\"data_response\"><div id=\"dow_current\">0<\/div><\/td><td><div id=\"dow_change\" class=\"" + 
				changeClassDow + "\">0<\/div><\/td><\/tr><tr class=\"tr-odd\"><td>"+
				"<a href=\"#\" onclick=\"SBMM.doStockRetrieve('%5EIXIC'); return false;\">Nasdaq<\/a><\/td>"+
				"<td class=\"data_response\"><div id=\"nasdaq_current\">0<\/div><\/td><td class=\"data_response\">"+
				"<div id=\"nasdaq_change\" class=\"" + changeClassNasdaq + "\">0<\/div><\/td><\/tr>"+
				"<tr><td><a href=\"#\" onclick=\"SBMM.doStockRetrieve('%5EGSPC'); return false;\">S &amp; P 500<\/a>"+
				"<\/td><td class=\"data_response\"><div id=\"sp_current\">0<\/div><\/td><td class=\"data_response\">"+
				"<div id=\"sp_change\" class=\"" + changeClassSP + "\">0<\/div><\/td><\/tr><tr class=\"tr-odd\">"+
				"<td colspan=\"2\"><a href=\"#\" onclick=\"SBMM.doStockRetrieve('%5ETV.N'); return false;\">NYSE Volume<\/a><\/td>"+
				"<td class=\"data_response\"><div id=\"nyse_volume\">" + quote2[3].current + "<\/div><\/td><\/tr><tr>"+
				"<td colspan=\"2\"><a href=\"#\" onclick=\"SBMM.doStockRetrieve('%5ETV.O'); return false;\">Nasdaq Volume<\/a><\/td>"+
				"<td class=\"data_response\"><div id=\"nasdaq_volume\">" + quote2[4].current + "<\/div><\/td><\/tr><\/table>";
		}

		var changeClassDow = "green";
		if (quote2[0].change < 0) {
			changeClassDow = "red";
		}

		var changeClassNasdaq = "green";
		if (quote2[1].change < 0) {
			changeClassNasdaq = "red";
		}

		var changeClassSP = "green";
		if (quote2[2].change < 0) {
			changeClassSP = "red";
		}

		$('nasdaq_change').className = changeClassNasdaq;
		$('dow_change').className = changeClassDow;
		$('sp_change').className = changeClassSP;

		new Effect.CashRegister('dow_current', quote2[0].current);
		new Effect.CashRegister('nasdaq_current', quote2[1].current);
		new Effect.CashRegister('sp_current', quote2[2].current);
		new Effect.CashRegister('dow_change', quote2[0].change);
		new Effect.CashRegister('nasdaq_change', quote2[1].change);
		new Effect.CashRegister('sp_change', quote2[2].change);

		if (SBMM.market_condition === true) {
			SBMM.autoStockUpdateId['us-index'] = setInterval(function() {
					SBMM.doServerRequest(SBMM.controlUrl, '1', SBMM.drawWidgetMarketWatch);
				}, 30 * 1000);

			$('market_condition').className = 'green';
		} else {
			$('market_condition').className = 'red';
		}
	},

	drawFundamentals: function(ticker) {
		pageTracker._trackEvent("Fundamentals", ticker);
		ticker = ticker.toUpperCase();

		SBMM.openPrototypeWindow('fundamentals-' + ticker, '<img class="icon-header" src="images/m-icons/f.png"/>' +  ticker + ' - Fund.', true, 45 + (SBMM.fundCount * 15), 810 + (SBMM.fundCount * 15), 135);

		SBMM.fundCount++;

		if (ticker.charAt(0) != '^') {
			$('fundamentals-' + ticker + '-div').innerHTML = "<table width=\"100%\"><tr class=\"shortcuts-row\"><td width=\"33%\"><a onclick=\"SBMM.doStockRetrieve('" + ticker + "'); return false;\" href=\"#\"><img src=\"images/m-icons/i.png\" alt=\"Stock Info\"/> Info</a></td><td width=\"33%\"> <a onclick=\"SBMM.doServerRequest(SBMM.controlUrl, '3&symbol=" + ticker + "', SBMM.drawStockNews); return false;\" href=\"#\"><img src=\"images/m-icons/n.png\" alt=\"Stock News\"/> News</a></td><td width=\"33%\"> <a href=\"#\" onclick=\"SBMM.drawChart('" + ticker + "'); return false;\"><img src=\"images/m-icons/c.png\" alt=\"Stock Chart\"/> Chart</a></td></tr></table> <table width=\"100%\" cellpadding=\"4\" cellspacing=\"0\">	<tr><td width=\"50%\"><a target=\"_blank\" href=\"news?t=" + ticker + " Key Stats" + "&l=http://finance.yahoo.com/q/ks?s=" + ticker + "\">Key Stats</a></td><td><a target=\"_blank\" href=\"news?t=" + ticker + " SEC Filings" + "&l=http://finance.yahoo.com/q/sec?s=" + ticker + "\">SEC Filings</a></td></tr><tr class=\"tr-odd\"><td width=\"50%\"><a target=\"_blank\" href=\"news?t=" + ticker + " Major Holders" + "&l=http://finance.yahoo.com/q/mh?s=" + ticker + "\">Major Holders</a></td><td><a target=\"_blank\" href=\"news?t=" + ticker + " Cash Flow" + "&l=http://finance.yahoo.com/q/cf?s=" + ticker + "\">Cash Flow</a></td></tr><tr><td width=\"50%\"><a target=\"_blank\" href=\"news?t=" + ticker + " Income Statement" + "&l=http://finance.yahoo.com/q/is?s=" + ticker + "\">Income</a></td><td><a target=\"_blank\" href=\"news?t=" + ticker + " Balance Sheet" + "&l=http://finance.yahoo.com/q/bs?s=" + ticker + "\">Balance Sheet</a></td></tr>	<tr class=\"tr-odd\"><td colspan=\"2\" align=\"center\" width=\"100%\"><a target=\"_blank\" href=\"news?t=" + ticker + " Insider Transactions" + "&l=http://finance.yahoo.com/q/it?s=" + ticker + "\">Insider Transactions</a></td></tr></table>";
		} else {
			if (ticker.toLowerCase().indexOf('^dj') == -1) {
				$('fundamentals-' + ticker + '-div').innerHTML = "<table width=\"100%\"><tr class=\"shortcuts-row\"><td width=\"33%\"><a onclick=\"SBMM.doStockRetrieve('" + ticker + "'); return false;\" href=\"#\"><img src=\"images/m-icons/i.png\" alt=\"Stock Info\"/> Info</a></td><td width=\"33%\"> <a onclick=\"SBMM.doServerRequest(SBMM.controlUrl, '3&symbol=" + ticker + "', SBMM.drawStockNews); return false;\" href=\"#\"><img src=\"images/m-icons/n.png\" alt=\"Stock News\"/> News</a></td><td width=\"33%\"> <a href=\"#\" onclick=\"SBMM.drawChart('" + ticker + "'); return false;\"><img src=\"images/m-icons/c.png\" alt=\"Stock Chart\"/> Chart</a></td></tr></table> <table width=\"100%\" cellpadding=\"4\" cellspacing=\"0\">	<tr><td width=\"50%\"><a target=\"_blank\" href=\"news?t=" + ticker + " Components" + "&l=http://finance.yahoo.com/q/cp?s=" + ticker + "\">Components</a></td><td><a target=\"_blank\" href=\"news?t=" + ticker + " Historical Prices" + "&l=http://finance.yahoo.com/q/hp?s=" + ticker + "\">Historical Prices</a></td></tr></table>";
			}
		}
	},

	drawStockNews: function(r) {
		var rss = eval(r.responseText);
		rss.quote = rss.quote.toUpperCase();

		SBMM.openPrototypeWindow('snews-' + rss.quote, '<img class="icon-header" src="images/m-icons/n.png"/>' + rss.quote + ' - Stock News', true, 45 + (SBMM.newsCount * 15), 375 + (SBMM.newsCount * 15), 255, 420);
		SBMM.newsCount++;

		var content = '<table width="100%" align="center" cellpadding="5" cellspacing="0"><tr class="shortcuts-row"><td width="25%" nowrap><a onclick="SBMM.doStockRetrieve(\'' + rss.quote + '\'); return false;" href=\"#\"><img class="icon" src="images/m-icons/i.png" alt="Stock Info"/> Info</a></td><td width="25%" nowrap><a href=\"#\" onclick=\"SBMM.drawChart(\'' + rss.quote + '\'); return false;\"><img  src="images/m-icons/c.png" alt="Stock Chart"/> Chart</a></td><td width="25%" nowrap><a href=\"#\" onclick=\"SBMM.doStockTwits(\'' + rss.quote + '\'); return false;\"><img  src="images/m-icons/t.png" alt="Stock Tweets"/> Tweets</a></td><td width="25%" nowrap><a onclick=\"SBMM.drawFundamentals(\'' + rss.quote + '\'); return false;\" href="#"><img src="images/m-icons/f.png" alt="Stock Fundamentals"/> Fundamentals</a></td></tr></table><table width="100%" cellspacing="0" cellpadding="4">';

		for (i = 0; i < rss.rss.size(); i++) {
			var item = rss.rss[i];
			var news = item.title + " " + item.description;
			var odd = "";

			if ( i % 2 == 0) { odd = " class='tr-odd'"; }
			var element = '<tr' + odd + '><td valign="top" nowrap><div id="news_published_date" class="news_published_date">' + SBMM.prettyDate(item.pubDate, false) + '</div></td><td valign="top" nowrap><a target="_blank" href="news?t=' + item.title + '&l=' + item.link + '"><img alt=\"external link\" src="images/m-icons/external.png"/></a></td><td valign="top"><div id="news_item" class="news_item_title"><a target="_blank" href="' + item.link + '" onclick="Effect.toggle($(\'snews-' + rss.quote + '-' + i + '-body\'), \'blind\', {duration: 0.2}); return false;">' + item.title + '</a></div><div id="snews-' + rss.quote + "-" + i + '-body" class="news_description" style="display:none;">' + item.description;
			element += (item.description=='') ? '' : '<br/><br/>';
			element += '<a target="_blank" href="news?t=' + item.title + '&l=' + item.link + '">Click here to read full story <img alt=\"external link\" src="images/m-icons/external.png"/></a></div></td></tr>';

			content += element;
		}

		$('snews-' + rss.quote + '-div').innerHTML = content + '</table>';
	},

	doStockTwits:  function(s) {
		SBMM.doServerRequest(SBMM.twitterUrl, 'tsn&symbol=' + s, SBMM.drawStockTwits);
		//new Ajax.Request(SBMM.twitterUrl, { method: 'post', parameters: 'actionName=tsn&symbol=' + s, onComplete: SBMM.drawStockTwits});	
		pageTracker._trackEvent("Stock Tweets", s);	
	},

	drawStockTwits: function(r) {
		var rss = eval(r.responseText);
		rss.quote = rss.quote.toUpperCase();
		var link = /((http|https):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g;
		var tick = /\\$([\^a-zA-Z]+[0-9]*)(\.[a-z]{1,3})?/g;

		SBMM.openPrototypeWindow('stwits-' + rss.quote, '<img class="icon-header" src="images/m-icons/t.png"/>' + rss.quote + ' - Tweets', true, 45 + (SBMM.newsCount * 15), 375 + (SBMM.newsCount * 15), 255, 420);
		SBMM.newsCount++;

		var content = '<table width="100%" align="center" cellpadding="5" cellspacing="0"><tr class="shortcuts-row"><td width="25%" nowrap><a onclick="SBMM.doStockRetrieve(\'' + rss.quote + '\'); return false;" href=\"#\"><img class="icon" src="images/m-icons/i.png" alt="Stock Info"/> Info</a></td><td width="25%" nowrap> <a href=\"#\" onclick=\"SBMM.drawChart(\'' + rss.quote + '\'); return false;\"><img  src="images/m-icons/c.png" alt="Stock Chart"/> Chart</a></td><td width="25%" nowrap><a href="#" onclick="SBMM.doServerRequest(SBMM.controlUrl, \'3&symbol=' + rss.quote + '\', SBMM.drawStockNews); return false;"><img src="images/m-icons/n.png" alt="Stock News"/> News</a></td><td width="25%" nowrap><a onclick=\"SBMM.drawFundamentals(\'' + rss.quote + '\'); return false;\" href="#"><img src="images/m-icons/f.png" alt="Stock Fundamentals"/> Fundamentals</a></td></tr></table><table width="100%" cellspacing="0" cellpadding="4">';

		if (rss.rss.size() == 0) {
			content += '<tr><td width="100%" align="center"><br/><br/>User comments from Twitter not found for ' + rss.quote + '.</td></tr></table>';
		}

		for (i = 0; i < rss.rss.size(); i++) {
			var item = rss.rss[i];
			var news = item.title + " " + item.description;
			var odd = "";
			var desc = item.description;

			desc = desc.replace(link, '<a href="$1" rel="nofollow" target="_blank">$1</a> ');
			desc = desc.replace(tick, '<a href="#" onclick="SBMM.doStockRetrieve(\'$1\');return false;"><span>$</span>$1</a>');
			
			if ( i % 2 == 0) { odd = " class='tr-odd'"; }
			var element = '<tr' + odd + '><td valign="top" nowrap><div id="news_published_date" class="news_published_date">' + item.pubDate + '</div></td><td valign="top"><a href="http://twitter.com/' + item.author + '" target="_blank"><b>' + item.author + '</b></a>: ' + desc + '</td></tr>';

			content += element;
		}

		$('stwits-' + rss.quote + '-div').innerHTML = content + '</table>';
	},

	changeTweeterMostDiscussedTickers: function() {
		SBMM.mdtView = $F('mdtRangeS');
		SBMM.doTweeterMostDiscussedTickers();
	},

	doTweeterMostDiscussedTickers: function (r) {
		if (r) {
			var as = eval(r.responseText);
			var o = '<div class="boxtop">Showing: <select class="input" id="mdtRangeS" onchange="SBMM.changeTweeterMostDiscussedTickers();"><option value="1">Past hour</option><option value="24">Past 24 hours</option><option value="7">Past 7 days</option><option value="30">Past month</option><option value="365">Past year</option></select></div><table width="100%" cellspacing="0" cellpadding="4"><tr class="table-captions"><th>Ticker</th><th>#</th><th colspan="5">Shortcuts</th></tr>';

			as.each( function(s, i) {
				var sy = s.symbol.toUpperCase();
				var odd = "";
				if ( i % 2 == 0) { odd = " class='tr-odd'"; }
				o += "<tr" + odd + "><td><a onclick=\"SBMM.doStockRetrieve('" + sy + "'); return false;\" href=\"#\">" + sy + "</a></td><td valign='top'>" + s.count + "</td><td><a onclick=\"SBMM.doStockRetrieve('" + sy + "'); return false;\" href=\"#\"><img src=\"images/m-icons/i.png\"/></a></td><td><a onclick=\"SBMM.doServerRequest(SBMM.controlUrl, '3&symbol=" + sy + "', SBMM.drawStockNews); return false;\" href=\"#\"><img src=\"images/m-icons/n.png\"/></a></td><td><a onclick=\"SBMM.doStockTwits('" + sy + "'); return false;\" href=\"#\"><img src=\"images/m-icons/t.png\"/></a></td><td><a href=\"#\" onclick=\"SBMM.drawChart('" + sy + "'); return false;\"><img src=\"images/m-icons/c.png\"/></a></td><td><a href=\"#\" onclick=\"SBMM.showPortfolioAddStock('" + sy + "'); return false;\"><img src=\"images/m-icons/p_add.png\"/></a></td></tr>";
			} );

			if ($('mtwitter-mdt-div')) {
				$('mtwitter-mdt-div').innerHTML = o + '</table>';
				if (SBMM.mdtView == "24") {
					$('mdtRangeS').selectedIndex = 1;
				} else if (SBMM.mdtView == "1") {
					$('mdtRangeS').selectedIndex = 0;
				} else if (SBMM.mdtView == "7") {
					$('mdtRangeS').selectedIndex = 2;
				} else if (SBMM.mdtView == "30") {
					$('mdtRangeS').selectedIndex = 3;
				}	else if (SBMM.mdtView == "365") {
					$('mdtRangeS').selectedIndex = 4;
				}
			}
			return;
		}

		SBMM.openPrototypeWindow('mtwitter-mdt', 'Twitter Top', true, 0, 0, 330, 200, true);

		$('mtwitter-mdt-div').innerHTML = '<div style="width:100%;height:100%;text-align:center;"><br/><br/><br/>Loading..<br/><br/><br/><img src="images/indicator_large.gif"/></div>';

		SBMM.doServerRequest(SBMM.twitterUrl, 'mdt&x=' + SBMM.mdtView, SBMM.doTweeterMostDiscussedTickers);
	},

	doTweeterNews: function() {
		SBMM.doServerRequest(SBMM.twitterUrl, 'tsn', SBMM.drawTweeterNews);
		//new Ajax.Request(twitterUrl, { method: 'post', parameters: 'actionName=tsn', onComplete: SBMM.drawTweeterNews});

		SBMM.openPrototypeWindow('mtwitter', 'Twitter Stocks River', true, 160, 550, 400, 600, true);
		$('mtwitter-div').innerHTML = '<div style="width:100%;height:100%;text-align:center;"><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>Loading twitter stocks..<br/><br/><br/><img src="images/indicator_large.gif"/></div>';

		pageTracker._trackEvent("Stock Tweets", "Tweet River");
	},

	drawTweeterNews: function(r) {
		SBMM.openPrototypeWindow('mtwitter', 'Twitter Stocks River', true, 160, 550, 400, 600, true);
		var rss = eval(r.responseText);
		var link = /((http|https):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g;
		var tick = /\\$([\^a-zA-Z]+[0-9]*)(\.[a-z]{1,3})?/g;
		var content = '<div class="boxtop"><a href="#" onclick="SBMM.doTweeterMostDiscussedTickers();return false;">Most discussed tickers</a> <select class="input" style="visibility:hidden;"><option value="-">-</option></select></div><table width="100%" cellspacing="0" cellpadding="4">';

		for (var i = 0; i < rss.rss.size(); i++) {
			var item = rss.rss[i];

			var odd = "";
			if ( i % 2 == 0) { odd = " class='tr-odd'"; }

			var desc = item.description;

			desc = desc.replace(link, '<a href="$1" rel="nofollow" target="_blank">$1</a> ');
			desc = desc.replace(tick, '<a href="#" onclick="SBMM.doStockRetrieve(\'$1\');return false;"><span>$</span>$1</a>');
			var element = '<tr' + odd + '><td valign="top" nowrap><div id="news_published_date" class="news_published_date">' + item.pubDate + '</div></td><td valign="top"><div><a href="http://twitter.com/' + item.author + '" target="_blank"><b>' + item.author + '</b></a>: ' + desc + '</div></td></tr>';

			content += element;
		}

		$('mtwitter-div').innerHTML = content + '</table>';
	},

	doStockRetrieve: function(ticker) {
		SBMM.doServerRequest(SBMM.controlUrl, '2&symbol=' + ticker, SBMM.drawStock);
		pageTracker._trackEvent("Stock Retrieve", ticker);
	},

	drawStock: function(r) {
		var quotes = eval(r.responseText);
		var quote = quotes[0];
		var chart = '';

		quote.ticker = quote.ticker.toUpperCase();
		clearInterval(SBMM.autoStockUpdateId[quote.ticker]);

		var valid = true;
		if (quote.date == 'N/A N/A') { valid = false; }

		if (quote.ticker.toLowerCase().indexOf('^dj') != -1) {
			inv = 'http://ichart.finance.yahoo.com/t?s=na';
		} else {
			inv = "http://ichart.finance.yahoo.com/t?s=" + quote.ticker;
		}

		if ( (!$('tstock-' + quote.ticker + '-div')) || ($('tstock-' + quote.ticker + '-div').innerHTML == '') ) {
			SBMM.openPrototypeWindow('tstock-' + quote.ticker, '<img class="icon-header" src="images/m-icons/i.png"/>' +  quote.ticker + ' - Stock Info', true, 45 + (SBMM.tickerCount * 15), 165 + (SBMM.tickerCount * 15), 255, 200);
			SBMM.tickerCount++;

			var changeClass = "green";
			if (quote.change < 0) {
				changeClass = "red";
			}

			UI.defaultWM.getWindow('tstock-' + quote.ticker).observe("destroyed", function(o) {
					clearInterval(SBMM.autoStockUpdateId[quote.ticker]);
				}
			);

			var percent = Math.round(((quote.change / quote.open) * 100) * 100) / 100;
			if ( (isNaN(percent)) || (percent == -Infinity) ) {
				percent = 0;
			}

			$('tstock-' + quote.ticker + '-div').innerHTML = "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"2\"><tbody><tr><td class=\"data_header\" colspan=\"2\" align=\"center\"><table width=\"100%\"><tr class=\"shortcuts-row\"><td width=\"33%\"><a href=\"#\" onclick=\"SBMM.doServerRequest(SBMM.controlUrl, '3&symbol=" + quote.ticker + "', SBMM.drawStockNews); return false;\"><img src=\"images/m-icons/n.png\" alt=\"Stock News\"/> News</a></td><td width=\"33%\"><a href=\"#\" onclick=\"SBMM.drawChart('" + quote.ticker + "'); return false;\"><img src=\"images/m-icons/c.png\" alt=\"Stock Chart\"/> Chart</a></td><td width=\"33%\"><a href=\"#\" onclick=\"SBMM.drawFundamentals('" + quote.ticker + "'); return false;\"><img src=\"images/m-icons/f.png\" alt=\"Stock Fundamentals\"/> Fund.</a></td></tr></table><\/td><\/tr><tr class=\"tr-odd\"><td class=\"data_header\">Company:<\/td><td>" + quote.name +"<\/td><\/tr><tr><td class=\"data_header\">Last Trade:<\/td><td><span id=\"quote_current_" + quote.ticker + "\" style=\"font-weight:bold;\">" + quote.current + "<\/span> (<span id=\"quote_volume_" + quote.ticker + "\">" + quote.volume + "<\/span>)<\/td><\/tr><tr class=\"tr-odd\"><td class=\"data_header\">Range:<\/td><td>" + quote.low + " - " + quote.high + "<\/td><\/tr><tr><td class=\"data_header\">Change:<\/td><td><span id=\"quote_change_" + quote.ticker + "\" class=\"" + changeClass + "\" style=\"font-weight:bold;\">" + quote.change + "<\/span> (<span id=\"quote_percent_" + quote.ticker + "\" class=\"" + changeClass + "\" style=\"font-weight:bold;\">" + percent + "<\/span>%)<\/td><\/tr><tr class=\"tr-odd\"><td class=\"data_header\">Open:<\/td><td>" + quote.open + "<\/td><\/tr><tr><td class=\"data_header\">Date:<\/td><td><span id=\"quote_date_"+ quote.ticker +"\">" + quote.date + "<\/span><\/td><\/tr><tr class=\"tr-odd\"><td colspan=\"2\"><div class=\"chart-image\"><a href=\"#\" onclick=\"SBMM.drawChart('" + quote.ticker + "'); return false;\"><img id=\"tchart_" + quote.ticker + "_img\" border=\"0\" src=\"" + inv + "&c=" + Math.random() * 99999 + "\"\/><\/div><\/td><\/tr><\/tbody><\/table>";
			if (quote.marketOpen == "true") { SBMM.market_condition = true; } else { SBMM.market_condition = false; }
		} else {
			if ( UI.defaultWM.getWindow('tstock-' + quote.ticker) !== undefined ) {
				var changeClass = "green";
				if (quote.change < 0) {
					changeClass = "red";
				}

				var percent = Math.round(((quote.change / quote.open) * 100) * 100) / 100;
				if ( (isNaN(percent)) || (percent == -Infinity) ) {
					percent = 0;
				}

				new Effect.CashRegister('quote_percent_' + quote.ticker, percent);
				new Effect.CashRegister('quote_current_' + quote.ticker, quote.current);
				new Effect.CashRegister('quote_volume_' + quote.ticker, quote.volume);
				new Effect.CashRegister('quote_change_' + quote.ticker, quote.change);
				$('quote_date_' + quote.ticker).innerHTML = quote.date;
				$('quote_change_' + quote.ticker).className = changeClass;
				$('quote_percent_' + quote.ticker).className = changeClass;
				$('tchart_' + quote.ticker + '_img').src = inv + '&c=' + Math.random() * 99999 ;
			} else {
				clearInterval(SBMM.autoStockUpdateId[quote.ticker]);
			}
		}

		if (valid) {
			if (SBMM.market_condition === true) {
				SBMM.autoStockUpdateId[quote.ticker] = setInterval( function() {
					SBMM.doServerRequest(SBMM.controlUrl, '2&symbol=' + quote.ticker, SBMM.drawStock);
				}, 15 * 1000);
			}
		} else {
			$('quote_symbol_' + quote.ticker).innerHTML = $('quote_symbol_' + quote.ticker).innerHTML + " <span class=\"red\">no data<\/span>";
		}
	},

	drawChart: function(ticker) {
		if ( (ticker.toLowerCase().indexOf('^dj') != -1) || (ticker.toLowerCase().indexOf('%5edj') != -1) ) {
			return;
		}

		SBMM.openPrototypeWindow('chart-' + ticker, '<img class="icon-header" src="images/m-icons/c.png"/>' + ticker.toUpperCase() + ' - Chart', false, 100, 100, 390, 645, true);

		$('chart-' + ticker + '-div').innerHTML = "<embed height=\"350\" width=\"100%\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" flashvars=\"lcId=1214458315214&localeUri=http%3A//us.js2.yimg.com/us.yimg.com/i/us/fi/yfcv3/locale/flashchart_en_1.1.xml&state=symbol%3D" + ticker + "%3Brange%3D1d%3Bindicator%3Dvolume%3Bcharttype%3Dline%3Bcrosshair%3Don%3Bohlcvalues%3D0%3Blogscale%3Don&source=undefined\" wmode=\"opaque\" loop=\"false\" bgcolor=\"#ffffff\" menu=\"false\" allowscriptaccess=\"always\" name=\"test\" type=\"application/x-shockwave-flash\" src=\"http://us.js2.yimg.com/us.yimg.com/i/us/fi/yfcv3/swf/flashchart_1.27.swf\"/>";
		
		pageTracker._trackEvent("Chart", ticker);
	},

	doToggleList: function(e) {
		if ($(e.target.id + "-state").value == "on") {
			$(e.target.id + "-state").value = "off";
			$(e.target.id + "-span").removeClassName("current");
		} else {
			$(e.target.id + "-state").value = "on";
			$(e.target.id + "-span").addClassName("current");
		}
		Effect.toggle(e.target.id + '-list', 'blind', {duration: 0.2});
	},

	doAddPortfolioStock: function() {
		if ($('padd-symbol').value !== '') {
			SBMM.doServerRequest(SBMM.controlUrl, '20&x=' + $('padd-symbol').value + '&q=' + $('padd-quantity').value + '&p=' + $('padd-price').value, SBMM.doPortfolio);
		}

		pageTracker._trackEvent("Portfolio", "Add Entry", $('padd-symbol').value);
	},

	doRemovePortfolioStock: function() {
		for (var i = 0; i < $$('#pentry-remove').length; i++) {
			if ($$('#pentry-remove')[i].checked) {
				SBMM.doServerRequest(SBMM.controlUrl, '22&x=' + $$('#pentry-remove')[i].value, null);
			}
		}

		SBMM.doPortfolio();
		
		pageTracker._trackEvent("Portfolio", "Remove Entry");
	},

	doPortfolioEditStock: function(i) {
		if ( ($('pedit-quantity-' + i).value !== '') && ($('pedit-price-' + i).value !== '') ) {
			SBMM.doServerRequest(SBMM.controlUrl, '22e&x=' + i + '&q=' + $('pedit-quantity-' + i).value + '&p=' + $('pedit-price-' + i).value, null);
		}

		pageTracker._trackEvent("Portfolio", "Edit Entry");
	},

	showPortfolio: function() {
		SBMM.doPortfolio();
		
		pageTracker._trackEvent("Portfolio", "View");
	},

	showPortfolioAddStock: function(r) {
		if (!r) {
			$('tportfolio_table').hide();
			$('tportfolio_remove_table').hide();
			$('tportfolio_edit_table').hide();
			$('tportfolio_add_table').show();
	
			if ( $('tportfolio_add_body') !== undefined ) {
				Element.insert($('tportfolio_add_body'), {bottom: "<tr><td>Symbol:</td><td><input size=\"5\" class=\"input\" type=\"text\" id=\"padd-symbol\"/><\/td></tr><tr><td>Shares:</td><td><input size=\"5\" class=\"input\" type=\"text\" id=\"padd-quantity\"/><\/td></tr><tr><td>Price Purchased:</td><td><input size=\"5\" class=\"input\" type=\"text\" id=\"padd-price\"/><\/td><\/tr><tr><td style=\"text-align:center;\"><input type=\"button\" value=\"add\" onclick=\"SBMM.doAddPortfolioStock();\"/><\/td><\/tr>"});
			}
		} else {
			SBMM.doPortfolio();
			$('tportfolio_table').hide();
			$('tportfolio_remove_table').hide();
			$('tportfolio_edit_table').hide();
			$('tportfolio_add_table').show();

			Element.insert($('tportfolio_add_body'), {bottom: "<tr><td>Symbol:</td><td><input size=\"5\" class=\"input\" type=\"text\" id=\"padd-symbol\" value=\"" + r + "\"/><\/td></tr><tr><td>Shares:</td><td><input size=\"5\" class=\"input\" type=\"text\" id=\"padd-quantity\"/><\/td></tr><tr><td>Price Purchased:</td><td><input size=\"5\" class=\"input\" type=\"text\" id=\"padd-price\"/><\/td><\/tr><tr><td style=\"text-align:center;\"><input type=\"button\" value=\"add\" onclick=\"SBMM.doAddPortfolioStock();\"/><\/td><\/tr>"});
		}
	},

	showPortfolioEditStock: function() {
		$('tportfolio_table').hide();
		$('tportfolio_remove_table').hide();
		$('tportfolio_add_table').hide();
		$('tportfolio_edit_table').show();
	},

	showPortfolioRemoveStock: function() {
		$('tportfolio_table').hide();
		$('tportfolio_edit_table').hide();
		$('tportfolio_add_table').hide();

		if (!$('pentry-remove-button')) {
			Element.insert($('tportfolio_remove_body'), {bottom: "<tr><td style=\"text-align:center;\" colspan=\"4\"><input type=\"button\" id=\"pentry-remove-button\" value=\"remove\" onclick=\"SBMM.doRemovePortfolioStock()\"/><\/td><\/tr>"});
		}
		$('tportfolio_remove_table').show();
	},

	doPortfolio: function() {
		if (SBMM.logged_in == true) {
			SBMM.openPrototypeWindow('portfolio', 'Portfolio', true, 320, 380, 255, 300, true);
			$('portfolio-div').innerHTML = "<input type=\"button\" onclick=\"SBMM.showPortfolio()\" value=\"View\"/><input type=\"button\" onclick=\"SBMM.showPortfolioAddStock()\" value=\"Add\"/><input type=\"button\" onclick=\"SBMM.showPortfolioEditStock()\" value=\"Edit\"/><input type=\"button\" onclick=\"SBMM.showPortfolioRemoveStock()\" value=\"Remove\"/><table cellspacing=\"0\" cellpadding=\"2\" id=\"tportfolio_table\" style=\"width:100%\"><thead><tr class=\"table-captions\"><td>Symbol</td><td>Last Trade</td><td>Range</td><td>Change</td></tr><\/thead><tbody id=\"tportfolio_body\"><\/tbody><\/table><table cellspacing=\"0\" cellpadding=\"2\" id=\"tportfolio_edit_table\" style=\"display:none;width:100%\"><tbody id=\"tportfolio_edit_body\"><\/tbody><\/table><form id=\"pentry-remove-form\"><table cellspacing=\"0\" cellpadding=\"2\" id=\"tportfolio_add_table\" style=\"display:none;width:100%\"><tbody id=\"tportfolio_add_body\"><\/tbody><\/table><table cellspacing=\"0\" cellpadding=\"2\" id=\"tportfolio_remove_table\" style=\"display:none;width:100%\"><tbody id=\"tportfolio_remove_body\"><\/tbody><\/table><\/form><div id='portfolio-loading' style=\"width:95%;text-align:center\"><br/><br/><br/><img src=\"images/indicator_large.gif\"/></div>";
			SBMM.doServerRequest(SBMM.controlUrl, '21', SBMM.drawPortfolio);

			pageTracker._trackEvent("Portfolio", "View");
		} else {
			SBMM.displayLogin('l', 'p');
		}
	},

	drawPortfolio: function(r) {
		$('portfolio-loading').hide();
		var p = eval(r.responseText);
		var totalValue = 0;

		for (var i = 0; i < p.length; i++) {
			var quote = p[i];

			if ( $('tportfolio_body') !== undefined ) {
				var changeClass = "green";
				if (quote.change < 0) {
					changeClass = "red";
				}

				quote.symbol = quote.symbol.toUpperCase();
				var change = SBMM.calcChange(quote.quantity, quote.price, quote.info.quote[0].current);

				var odd = "";
				if ( i % 2 == 0) { odd = " class='tr-odd'"; }

				var changeClass = "green";
				if (quote.info.quote[0].change < 0) { changeClass = "red"; }

				var element = "<tr" + odd + " id=\"pentry_" + quote.symbol + "\"><td> <a href=\"#\" onclick=\"Effect.toggle($('pentry_" + quote.id + "_extra'), \'blind\', {duration: 0.2}); return false;\">+</a> <a onclick=\"SBMM.doStockRetrieve('" + quote.symbol + "'); return false;\" href=\"#\">" + quote.symbol + "<\/a><\/td><td style=\"font-weight:bold;\">" + quote.info.quote[0].current + "<\/td><td>" + quote.info.quote[0].low + " - " + quote.info.quote[0].high + "<\/td><td class=\"" + changeClass + "\">" + quote.info.quote[0].change + "<\/td><\/tr>";
				var changeClass = "green";
				if (SBMM.calcPercent(quote.quantity, quote.price, quote.info.quote[0].current) == 0) {
					changeClass = "";
				} else if (SBMM.calcPercent(quote.quantity, quote.price, quote.info.quote[0].current) < 0) { 
					changeClass = "red";
					totalValue = totalValue - change;
				} else {
					totalValue = totalValue + change;
				}

				element += "<tr" + odd + " id=\"pentry_" + quote.id + "_extra\" style=\"display:none;\"><td colspan=\"4\" style=\"padding-left:10px;\"><table width=\"100%\"><tr><td>Entry Price: " + quote.price + "</td><td>Change: <span class=\"" + changeClass + "\">" + change + " (" + SBMM.calcPercent(quote.quantity, quote.price, quote.info.quote[0].current) + "%)</span></td></tr><tr><td>Market Value: " + SBMM.round(quote.quantity * quote.info.quote[0].current) + "</td><td>Entry Date: " + quote.date + "</td></tr></table><\/td><\/tr>";

				if ( i == (p.length - 1) ) {
					var t = '<tr><td colspan="4" align="center">Portfolio Market Value: ' + SBMM.round(totalValue) + '</td></tr>';
					Element.insert($('tportfolio_body'), {bottom: t});
				}

				Element.insert($('tportfolio_body'), {top: element});

				var element2 = "<tr" + odd + "><td>Symbol: " + quote.symbol + "<\/td><td>Shares: <input size=\"5\" class=\"input\" type=\"text\" id=\"pedit-quantity-" + quote.id + "\" value=\"" + quote.quantity + "\"/><\/td><td>Price Purchased: <input size=\"5\" class=\"input\" type=\"text\" id=\"pedit-price-" + quote.id + "\" value=\"" + quote.price + "\"/><\/td><td><input type=\"button\" value=\"update\" onclick=\"SBMM.doPortfolioEditStock('" + quote.id + "')\"/><\/td><\/tr>";

				Element.insert($('tportfolio_edit_body'), {top: element2});

				var element3 = "<tr" + odd + "><td>Symbol: " + quote.symbol + "<\/td><td>Shares: " + quote.quantity + "<\/td><td>Price Purchased: " + quote.price + "<\/td><td><input type=\"checkbox\" id=\"pentry-remove\" name=\"pentry-remove\" value=\"" + quote.id + "\"><\/td><\/tr>";

				Element.insert($('tportfolio_remove_body'), {top: element3});
			}
		}
	},

	calcPercent: function(q, p, c) {
		if (q == 0) {
			return 0;
		}

		var f = (((q * c) - (q * p)) / (q * p)) * 100;

		return SBMM.round(f);
	},

	calcChange: function(q, p, c) {
		var f = 0;

		if (p > c) {
			f = (q * p) - (q * c);
		} else {
			f = (q * c) - (q * p);
		}

		return SBMM.round(f);
	},

	round: function(v) {
		return Math.round(v * 100)/100;
	},

	displayLogin: function(w, m) {
		if (w == 'l') {
			SBMM.openPrototypeWindow('login', 'Login', false, 35, 170, 210, 495, true);

			if (m) {
				if (m == 'p') {
					m = 'You must login or <a href="/register" target="_blank">register</a> in order to add stocks to your portfolio';
				} else if (m == 's') {
					m = 'You must login or <a href="/register" target="_blank">register</a> in order to save your workspace';
				} else if (m == 'm') {
					m = 'You must login or <a href="/register" target="_blank">register</a> to add your own feeds';
				}
			} else { m = ''; }

			$('login-div').innerHTML = '<div class="login-message" id="login-message">' + m + '</div><h3 style="color:#473B3B;font-size:16px;margin:10px 0px 5px;position:relative;text-align:center;">Credentials</h3><form action="#" onsubmit="return false;"><table width="100%" cellspacing="1" cellpadding="4"><tr><td class="label" width="150">Username:</td><td><input id="user.email" type="text" size="30" class="input"/></td></tr><tr class=\"tr-odd\"><td class="label" width="150">Password:</td><td><input id="user.pass" type="password" size="30" class="input"/></td></tr></table><br/><div style=\"text-align:center;\" id=\"login-error\"><\/div><br/><div align="center"><button onclick="SBMM.doLogin()">Login</button></div></form>';
			UI.defaultWM.getWindow('login').activate();
		}
	},

	doLogin: function() {
		var user_email = $('user.email').value;
		var user_pass = $('user.pass').value;
		
		if (user_email == '') {
			$('user.email').addClassName("empty");
		}

		if (user_pass == '') {
			$('user.pass').addClassName("empty");
		}

		if ((user_email !== '') && (user_pass !== '')) {
			SBMM.doServerRequest(SBMM.loginUrl, '00&u=' + user_email + '&p=' + user_pass, SBMM.checkValidLogin);
			// new Ajax.Request(SBMM.loginUrl, { method: 'post', parameters: 'actionName=00&u=' + user_email + '&p=' + user_pass, onComplete: SBMM.checkValidLogin });
			
			pageTracker._trackEvent("Login", "Regular");
		}
	},

	cookieLogin: function() {
		var uid = SBMM.readCookie('uid');
		if ( (uid !== false) && (uid !== '' ) ) {
				// added to see if desktop needs loading when a sybmol request is sent
				var t = SBMM.gup("symbol");
				if (t != "") {
					SBMM.skipDesktop = true;
				}

				SBMM.doServerRequest(SBMM.loginUrl, '05&u=' + uid, SBMM.checkValidLogin);
				//new Ajax.Request(SBMM.loginUrl, { method: 'post', parameters: 'actionName=05&u=' + uid, onComplete: SBMM.checkValidLogin });
				
				pageTracker._trackEvent("Login", "Cookie");
		} else {
			SBMM.doParamLoading();
		}
	},

	checkValidLogin: function(r) {
		var stat = eval(r.responseText);
		stat = stat[0];
		if (stat.status == 'success') {
			// do successful login
			SBMM.logged_in = true;
			if ( (stat.uid != 'null') && (stat.uid != 'NULL') && (stat.uid !== '')  ) { SBMM.setCookie('uid', stat.uid); }
			$('join').innerHTML = '<a href="account" target="_blank">Account</a> <a href="#" onclick="SBMM.doLogout(); return false;">Logout</a>';

			try {	UI.defaultWM.getWindow("login").destroy(); } catch (e) {}

			if (!SBMM.skipDesktop) {
				SBMM.reopenWindows(stat.lastDesktop);
			} else {
				SBMM.doParamLoading();
			}
		} else {
			SBMM.doParamLoading();

			try {
				$('login-error').innerHTML = "Wrong user name or password.";
				$('login-error').addClassName('submitError');
			} catch (e) {}
		}
	},

	doLogout: function() {
		SBMM.doSaveSession();
		SBMM.expireCookie('uid');
		SBMM.logged_in = false;

		$('join').innerHTML = '<a href="#" onclick="SBMM.displayLogin(\'l\'); return false;">Login</a> <a href="/register" target="_blank">Register</a>';
		pageTracker._trackEvent("Logout", "Logout");
	},

	doMarketHeadlines: function(r) {
		if (!r) {
			SBMM.doServerRequest('spotlight_handler', 'sl&callback=SBMM.drawMarketHeadlines&channel=' + SBMM.mhChannel, SBMM.doMarketHeadlines);
			//new Ajax.Request('spotlight_handler', { method: 'post', parameters: 'actionName=sl&callback=SBMM.drawMarketHeadlines&channel=' + SBMM.mhChannel, onComplete: SBMM.doMarketHeadlines});

			SBMM.openPrototypeWindow('mheadlines', 'Market Headlines', true, 160, 550, 400, 600, true);
			$('mheadlines-div').innerHTML = '<div style="width:100%;height:100%;text-align:center;"><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>Loading articles..<br/><br/><br/><img src="images/indicator_large.gif"/></div>';
			
			pageTracker._trackEvent("Market Headlines", "Initial View");
		} else {
			eval(r.responseText);
		}
	},

	switchMarketHeadlinesChannel: function() {
		SBMM.mhChannel = $F('mhChannel');
		SBMM.mhChannel2 = $('mhChannel').selectedIndex;
		SBMM.setCookie('mhc', SBMM.mhChannel);
		SBMM.setCookie('mhc2', SBMM.mhChannel2);
		SBMM.doMarketHeadlines();

		pageTracker._trackEvent("Market Headlines", "Channel Change", SBMM.mhChannel);
	},

	drawMarketHeadlines: function(r) {
		SBMM.openPrototypeWindow('mheadlines', 'Market Headlines', true, 160, 550, 400, 600, true);

		var content = '<div class="boxtop">Shortcuts: <select class="input" id="mhChannel" onchange="SBMM.switchMarketHeadlinesChannel();"><option value="topNews">Top News</option><option value="marketsnews">Market News</option><option value="businessNews">Business News</option><option value="economicnews">Economic News</option><option value="bankingFinancial">Banking News</option><option value="afterTheBell">After The Bell</option><option value="beforeTheBell">Before The Bell</option><option value="fundsFundsNews">Funds News</option><option value="privateEquity">Private Equity</option><option value="bondsnews">Bonds News</option><option value="newIssuesNews">New Issues News</option><option value="forexNews">Forex News</option><option value="etfNews">ETF News</option><option value="rbssFinancialServicesAndRealEstateNews">Financial Services and Real Estate</option><option value="rbssConsumerGoodsAndRetailNews">Consumer Goods And Retail News</option><option value="rbssEnergyNews">Energy News</option><option value="WealthManagement08">Wealth Management</option><option value="GlobalEnvironment08">Global Environment</option><option value="RussiaInvestment08">Russia Investment</option><option value="MiddleEastInvestment08">Middle East Investment</option><option value="IslamicBankingandFinance08">Islamic Banking and Finance</option><option value="CentralEuropeanInvestment08">Central European Invesment</option><option value="IndiaInvestment08">India Investment</option><option value="vcMSNMoney">MSN Money</option></select> <a onclick="SBMM.doManageSources(); return false;" href=\"#\">Manage Sources</a></div><br/><table width="100%" cellspacing="0" cellpadding="4">';

		for (var i = 0; i < r.items.length; i++) {
			var item = r.items[i];
			
			var related = '';
			for (var j = 0; j < item.tickers.length; j++) {
				var s = SBMM.parseTicker(item.tickers[j]);

				if (s) {
					related += '<a href="#" onclick="SBMM.doStockRetrieve(\'' + s + '\');return false;">' + s + '</a> ';
				}
			}

			if (related != '') {
				related = "<div>Related stocks: " + related + "</div>";
			}

			var odd = "";
			if ( i % 2 == 0) { odd = " class='tr-odd'"; }
			var element = '<tr' + odd + '><td valign="top" nowrap><div id="news_published_date" class="news_published_date">' + SBMM.prettyDate(false, item.published) + '</div></td><td valign="top"><div><a target="_blank" href="' + item.link + '" onclick="Effect.toggle($(\'headlindes-' + i + '-body\'), \'blind\', {duration: 0.2}); return false;">' + item.title + '</a></div><div id="headlindes-' + i + '-body" class="news_description" style="display:none;">' + item.body.text + '<br/>' + related + '<br/><a target="_blank" href="news?t=' + item.title + '&l=' + item.link + '" >(Original Source)</a></div></td></tr>';

			content += element;
		}

		$('mheadlines-div').innerHTML = content + '<tr><td colspan="2" align="center">Powered by Reuters Spotlight</td></tr></table>';

		try {
			for (var i = 0; i < r.items.length; i++) {
				$$('#headlindes-' + i + '-body a').each( function(v) { if (!v.onclick) { v.href=v.href.replace(/sanebull.com/,"reuters.com");v.target="_blank";} } );
			}
		} catch (e) {}

		$('mhChannel').selectedIndex = SBMM.mhChannel2;
	},

	doManageSources: function() {
		SBMM.openPrototypeWindow('msources', 'Manage Sources', true, 160, 550, 250, 320, true);

		$('msources-div').innerHTML = "<input type=\"button\" onclick=\"SBMM.showFaveSources()\" value=\"View Sources\"/><input type=\"button\" onclick=\"SBMM.doManageSources()\" value=\"Faves\"/><input type=\"button\" onclick=\"SBMM.showManageSourcesAdd()\" value=\"Add Source\"/><div id='msource-container'><table cellspacing=\"0\" cellpadding=\"2\" id=\"msources_table\" style=\"width:100%\"><thead><tr class=\"table-captions\"><td>Icon</td><td>Title</td><td>View</td><td>Remove</td></tr><\/thead><tbody id=\"msources_body\"><\/tbody><\/table><table width=\"100%\" cellspacing=\"0\" cellpadding=\"2\" id=\"msources_add_table\" style=\"display:none;width:100%\"><\/table><\/div>";

		if (SBMM.logged_in == true) {
			SBMM.doServerRequest(SBMM.controlUrl, '24', SBMM.drawManageSources);
		}

		pageTracker._trackEvent("Manage Sources", "Initial Loading");
	},

	showFaveRssFeeds: function () {
		$('msource-container').innerHTML = "";

		Element.insert($('msource-container'), {top:'<table cellspacing=\"0\" cellpadding=\"2\" id=\"msources_table\" style=\"width:100%\"><thead><tr><td colspan="4" align="center">Show: <a href="#" onclick="SBMM.showFaveRssFeeds(); return false;">RSS Feeds</a> | <a href="#" onclick="SBMM.showFaveTwits(); return false;">Twitter Streams</a></td></tr><tr class=\"table-captions\"><td>Icon</td><td>Title</td><td>View</td><td>Add</td></tr><\/thead><\/table>'});

		SBMM.feeds.each( function(feed, i) {
			if (feed.type == 't') {
				return;
			}

			var icon = "";
			if (feed.icon) {
				icon = '<img src="' + feed.icon + '" width="13" height="13"/>';
			}

			var odd = "";
			if ( i % 2 == 0) { odd = " class='tr-odd'"; }

			var element = '<tr' + odd + ' id="source-' + feed.id + '"><td>' + icon + '</td><td>' + feed.title + '</td><td><a href="#" onclick="SBMM.doDrawSource(\'' + feed.id + '\');return false;"><img src="images/m-icons/n.png"/></a></td><td><a href="#" onclick="SBMM.addUrlSource(\'' + feed.id + '\');return false;"><img src="images/m-icons/a.png"/></a></td></tr>';

			Element.insert($('msources_table'), {top: element});
		} );

		pageTracker._trackEvent("Manage Sources", "RSS Feed List");
	},

	showFaveTwits: function () {
		$('msource-container').innerHTML = "";
		Element.insert($('msource-container'), {top:'<table cellspacing=\"0\" cellpadding=\"2\" id=\"msources_table\" style=\"width:100%\"><thead><tr><td colspan="4" align="center">Show: <a href="#" onclick="SBMM.showFaveRssFeeds(); return false;">RSS Feeds</a> | <a href="#" onclick="SBMM.showFaveTwits();return false;">Twitter Streams</a></td></tr><tr class=\"table-captions\"><td>Icon</td><td>Title</td><td>View</td><td>Add</td></tr><\/thead><\/table>'});

		SBMM.feeds.each( function(feed, i) {
			if (feed.type == 'f') {
				return;
			}

			var icon = "";
			if (feed.icon) {
				icon = '<img src="' + feed.icon + '" width="13" height="13"/>';
			}

			var odd = "";
			if ( i % 2 == 0) { odd = " class='tr-odd'"; }

			var element = '<tr' + odd + ' id="source-' + feed.id + '"><td>' + icon + '</td><td>' + feed.title + '</td><td><a href="#" onclick="SBMM.doDrawSource(\'' + feed.id + '\');return false;"><img src="images/m-icons/n.png"/></a></td><td><a href="#" onclick="SBMM.addUrlSource(\'' + feed.id + '\');return false;"><img src="images/m-icons/a.png"/></a></td></tr>';

			Element.insert($('msources_table'), {top: element});
		} );
		
		pageTracker._trackEvent("Manage Sources", "Twitter List");
	},

	showFaveSources: function() {
		SBMM.showFaveRssFeeds();
	},

	drawManageSources: function (r) {
		var feeds = eval(r.responseText);
		for (var i = 0; i < feeds.length; i++) {
			var icon = "";
			if (feeds[i].icon) {
				icon = '<img src="' + feeds[i].icon + '" width="13" height="13"/>';
			}

			var odd = "";
			if ( i % 2 == 0) { odd = " class='tr-odd'"; }

			var element = '<tr' + odd + ' id="source-' + feeds[i].id + '"><td>' + icon + '</td><td>' + feeds[i].name + '</td><td><a href="#" onclick="SBMM.doDrawSource(\'' + feeds[i].id + '\');return false;"><img src="images/m-icons/n.png"/></a></td><td><a href="#" onclick="SBMM.removeSource(\'' + feeds[i].id + '\');return false;"><img src="images/m-icons/d.png"/></a></td></tr>';

			Element.insert($('msources_table'), {top: element});
		}
	},

	showManageSourcesAdd: function() {
		if (SBMM.logged_in == true) {
			var help = "Add Twitter user feed or a RSS feed. e.g: <br><br>pkedrosky (to add the twitter user feed for Paul Kedrosky)<br><br>www.wjs.com (to add a RSS feed from WSJ)<br><br>http://feeds.feedburner.com/Footnotedorg (to add any other RSS feed)"; // Add the URL of the news source, or a valid RSS feed.

			$('msource-container').innerHTML = "";

			Element.insert($('msource-container'), {top: '<table width=\"100%\" cellspacing=\"0\" cellpadding=\"2\" id=\"msources_add_table\"><tr><td align="center"><br/><input type="text" id="source-url" class="input" style="width:95%"><br/></td></tr><tr><td align="center">' + help + '</td></tr><tr><td align="center"><br/><input type="button" onclick="SBMM.addSource()" value="Add Source"/> <img id="addsource-indicator" src="/images/indicator_small.gif" style="display:none;"/> </td></tr><tr><td align="center"><div class="submitError" id="source-error"></div></td></tr><\/table>'});
		} else {
			SBMM.displayLogin('l', 'm');
		}
	},

	addUrlSource: function (fid) {
		if (SBMM.logged_in == true) {
			SBMM.doServerRequest(SBMM.controlUrl, "23&y=" + SBMM.faveUrl(fid), SBMM.addSource);
		} else {
			SBMM.displayLogin('l', 'm');
		}
	},

	addSource: function (r) {
		if (!r) {
			if ( $('source-url').value != '' ) {
				if ($('addsource-indicator')) { $('addsource-indicator').show(); }
				SBMM.doServerRequest(SBMM.controlUrl, "23&y=" + $('source-url').value, SBMM.addSource);
				pageTracker._trackEvent("Manage Sources", "Adding Source", $('source-url').value);
			} else {
				$('source-error').innerHTML  = 'Please enter valid URL';
			}
		} else {
			if (SBMM.logged_in == true) {
				if ($('addsource-indicator')) { $('addsource-indicator').hide(); }
				if (r.responseText == 'success') {
					SBMM.doManageSources();
				} else if (r.responseText == 'failure') {
					if ($('source-error')) {
						$('source-error').innerHTML  = 'Server error, please try again later';
					}
				} else if (r.responseText == 'invalidfeed') {
					if ($('source-error')) {
						$('source-error').innerHTML  = 'URL does not appear to be a valid feed';
					}
				}
			}
		}
	},

	removeSource: function(fid) {
		Element.remove('source-' + fid);
		SBMM.doServerRequest(SBMM.controlUrl, "25&x=" +  fid, null);
		pageTracker._trackEvent("Manage Sources", "Removing Source");
	},

	faveUrl: function(fid) {
		var furl = '';

		SBMM.feeds.find( function (feed, id) {
			if (feed.id == fid) {
				furl = feed.url;
				return true;
			}
		});

		return escape(furl);
	},

	faveTitle: function(fid) {
		var title = '';

		SBMM.feeds.find( function (feed) {
			if (feed.id == fid) {
				title = feed.title;
				return true;
			}
		});

		return title;
	},

	doDrawSource: function(fid) {
		if (fid.startsWith('f')) {
			SBMM.doServerRequest(SBMM.controlUrl, '10&x=' + SBMM.faveUrl(fid) + '&y=' + fid, SBMM.drawSource);
		} else {
			SBMM.doServerRequest(SBMM.controlUrl, '26&x=' + fid, SBMM.drawSource);
		}

		SBMM.openPrototypeWindow('msource-' + fid, '<span id="msource-fid-' + fid + '"/>', true, 200, 300, 255, 420, true);

		$('msource-' + fid + '-div').innerHTML = '<div style="width:100%;height:100%;text-align:center;"><br/><br/><br/><br/><br/>Loading feed..<br/><br/><br/><img src="images/indicator_large.gif"/></div>';
		
		pageTracker._trackEvent("Manage Sources", "Drawing Source", fid);
	},

	drawSource: function(r) {
		try {
			var rss = eval(r.responseText);

			if (rss.fid == '0') {
				rss.fid = rss.fname;
				rss.fname = SBMM.faveTitle(rss.fname);
			}

			SBMM.openPrototypeWindow('msource-' + rss.fid, '<img class="icon-header" src="images/m-icons/n.png"/>' + rss.fname, true, 200, 300, 255, 420, true);

			var content = '<table width="100%" align="center" cellpadding="5" cellspacing="0"><tr class="shortcuts-row"><td width="33%"><a onclick="SBMM.doServerRequest(SBMM.controlUrl, \'26&x=' + rss.fid + '\', SBMM.drawSource); return false;" href=\"#\"><img class="icon" src="images/m-icons/n.png"/> Refresh</a></td></tr></table><table width="100%" cellspacing="0" cellpadding="4">';

			if ($('msource-fid-' + rss.fid)) {
				$('msource-fid-' + rss.fid).innerHTML = '<img class="icon-header" src="images/m-icons/n.png"/>' + rss.fname;
			}

			for (var i = 0; i < rss.rss.size(); i++) {
				var item = rss.rss[i];
				var news = item.title + " " + item.description;
				var odd = "";

				if ( i % 2 == 0) { odd = " class='tr-odd'"; }
				var element = '<tr' + odd + '><td valign="top" nowrap><div id="news_published_date" class="news_published_date">' + SBMM.prettyDate(item.pubDate, false) + '</div></td><td valign="top" nowrap><a target="_blank" href="news?t=' + item.title + '&l=' + item.link + '"><img alt=\"external link\" src="images/m-icons/external.png"/></a></td><td valign="top"><div id="news_item" class="news_item_title"><a target="_blank" href="' + item.link + '" onclick="Effect.toggle($(\'source-' + rss.fid + '-' + i + '-body\'), \'blind\', {duration: 0.2}); return false;">' + item.title + '</a></div><div id="source-' + rss.fid + "-" + i + '-body" class="news_description" style="display:none;">' + item.description;
				element += (item.description=='') ? '' : '<br/><br/>';
				element += '<a target="_blank" href="news?t=' + item.title + '&l=' + item.link + '">Click here to read full story <img alt=\"external link\" src="images/m-icons/external.png"/></a></div></td></tr>';

				content += element;
			}

			$('msource-' + rss.fid + '-div').innerHTML = content + '</table>';
			
			try {
				for (var i = 0; i < rss.rss.size(); i++) {
					$$('#source-' + rss.fid + "-" + i + '-body a').each( function(v) { v.target="_blank"; } );
				}
			} catch (e) {}
		} catch (e) {}
	},

	drawTickerHistory: function() {
		SBMM.openPrototypeWindow('thistory', 'Ticker History', true, 160, 550, 195, 200, true);

		$('thistory-div').innerHTML = '<table id="thistory_table" cellspacing="0" cellpadding="2" width="100%"><thead><tr class="table-captions"><th>Symbol</th><th colspan="6">Shortcuts</th></tr></thead><tbody id="thistory_body"></tbody></table>';

		for (var i = 0; i < SBMM.ticker_array.length; i++) {
			var quote = SBMM.ticker_array[i];

			var odd = "";
			if ( i % 2 == 0) { odd = " class='tr-odd'"; }

			var element = "<tr" + odd + " id=\"history_" + quote.symbol + "\"><td><a onclick=\"SBMM.doStockRetrieve('" + quote.symbol + "'); return false;\" href=\"#\">" + quote.symbol + "</a></td><td><a onclick=\"SBMM.doStockRetrieve('" + quote.symbol + "'); return false;\" href=\"#\"><img src=\"images/m-icons/i.png\"/></a></td><td><a onclick=\"SBMM.doServerRequest(SBMM.controlUrl, '3&symbol=" + quote.symbol + "', SBMM.drawStockNews); return false;\" href=\"#\"><img src=\"images/m-icons/n.png\"/></a></td><td><a onclick=\"SBMM.drawFundamentals('" + quote.symbol + "'); return false;\" href=\"#\"><img src=\"images/m-icons/f.png\"/></a></td><td><a href=\"#\" onclick=\"SBMM.drawChart('" + quote.symbol + "'); return false;\"><img src=\"images/m-icons/c.png\"/></a></td><td><a href=\"#\" onclick=\"SBMM.removeFromTickerHistory('" + quote.symbol + "'); return false;\"><img src=\"images/m-icons/d.png\"/></a></td><td><a href=\"#\" onclick=\"SBMM.showPortfolioAddStock('" + quote.symbol + "'); return false;\"><img src=\"images/m-icons/p_add.png\"/></a></td></tr>";
				
			Element.insert($('thistory_body'), {top: element});
		}

		pageTracker._trackEvent("Ticker History", "View");
	},

	removeFromTickerHistory: function(ticker) {
		Element.remove('history_' + ticker);
		for (i = 0; i < SBMM.ticker_array.length; i++) {
			var q = SBMM.ticker_array[i];
			if (q.symbol == ticker) {SBMM.ticker_array.remove(q);}
		}
		pageTracker._trackEvent("Ticker History", "Removing Ticker");
	},

	addToTickerHistory: function(ticker) {
		var quote = new TickerHistoryQuote(ticker.toUpperCase(), SBMM.prettyDate(false, false));

		for (i = 0; i < SBMM.ticker_array.length; i++) {
			var q = SBMM.ticker_array[i];
			if (q.symbol == quote.symbol) {return;}
		}

		SBMM.ticker_array.push(quote);

		if ($('thistory-div')) {
			SBMM.drawTickerHistory();
		}
		pageTracker._trackEvent("Ticker History", "Adding Ticker");
	},

	drawHelp: function() {
		SBMM.openPrototypeWindow('help', 'Help', true, 160, 550, 400, 300, true);

		$('help-div').innerHTML = '<table><tr><td valign="top"><div id="faq-contents">How to use symbol search box:<ul class="section"><li>  Enter one ore more symbols with spaces<br> 		NYX AAPL GS ...<br/><br/></li><li>Enter "CHART" with one or more symbols to view symbol charts only:<br/>CHART NYX GS MSFT<br/><br/></li><li>ENTER "INFO" with one or more symbols to open symbol information window<br/>INFO NYX DLB MS ...<br/><br/></li><li>ENTER "FUND" with one or more symbols to open Fundentals window<br/>FUND CAT LEH ...<br/><br/></li><li>ENTER "NEWS" with one or more symbols to open News window<br/>NEWS MSFT YHOO ...<br/><br/></li> </ul></div></td></tr></table>';
		
		pageTracker._trackEvent("Help", "View");
	},

	drawFeedback: function() {
		SBMM.openPrototypeWindow('feedback', 'Feedback', true, 1, 1, 480, 450, true);

		$('feedback-div').innerHTML = '<table id="feedback" width="97%" cellpadding="4" cellspacing="1" class="table">	<tr class="tr1">		<td width="75" class="label">Name:</td><td><input id="name" type="text" class="input" size="40"/></td>	</tr><tr><td class="label">Email:</td><td><input id="email" type="text" class="input" size="40"/></td>	</tr>	<tr><td class="label">Username:</td><td><input id="username" type="text" class="input optionalField" size="40"/>	<span class="optional">(if applicable)</span></td>	</tr><tr><td class="label">Company:</td><td><input id="company" type="text" class="input optionalField" size="40"/>	<span class="optional">(optional)</span></td>	</tr><tr><td class="label">Website:</td><td><input id="website" type="text" class="input optionalField" size="40"/>	<span class="optional">(optional)</span></td>	</tr><tr><td class="label">Phone:</td><td><input id="phone" type="text" class="input optionalField" size="40"/>	<span class="optional">(optional)</span></td>	</tr><tr><td class="label">Subject:</td><td><select id="subject" class="input"><option value="Media Inquiry">Media Inquiry</option><option value="Sales">Sales Inquiry</option><option value="Support Questions">Support Questions</option><option value="Idea or Suggestion">Feedback</option><option value="Other">Other</option>	</select></td>	</tr><tr><td valign="top" class="label">Message:</td><td><textarea id="message" class="input" cols="40" rows="10"></textarea>	</tr><tr><td></td><td><button id="submit" class="submit" onclick="this.blur();SBMM.doFeedback();"/>Submit Feedback</button>	<span id="feedbackStatus"></span></td>	</tr></table>';
		new Ajax.Request('userinfo.jsp', { evalJS: false, evalJSON: false, sanitizeJSON: false, method: 'get', onComplete: SBMM.populateInfo});
		
		pageTracker._trackEvent("Feedback", "View Feedback Form");
	},

	doFeedback: function() {
		$('feedbackStatus').innerHTML = '<img src="/images/indicator_small.gif"/>';
		var p = '';
		var errors = '';
		var values = new Array('name', 'email', 'username', 'company', 'website', 'phone', 'subject', 'message');
		var v2 = new Array('name', 'email', 'subject', 'message');

		v2.each(
			function(s) { 
				if($(s).value == '') {
					errors += 'error!';
					return;
				}
			});
		
		if (errors != '') {
			$("feedbackStatus").innerHTML = "Please don't leave the required fields empty.";
			return;
		}

		values.each(function(s){ p += s + "=" + $(s).value + "&"; });
		new Ajax.Request('contact_handler', { evalJS: false, evalJSON: false, sanitizeJSON: false, method: 'post', parameters: p, onComplete: function() { $("feedbackStatus").innerHTML = "Message sent.  Thank you!"; } });
		pageTracker._trackEvent("Feedback", "Submitted");
	},

	populateInfo: function(r) {
		try {
			var i = eval(r.responseText);
			i = i[0];

			$('name').value = i.name;
			$('email').value = i.email;
			$('username').value = i.username;
		} catch (e) {}
	},

	drawRadio: function(station) {
		if (Silverlight.isInstalled('1.0')) {
			new Tip($('r-h'), "<div>	<a href=\"#\" onclick=\"SBMM.playRadio('CNN');return false;\">CNN Business</a><br/>	<a href=\"#\" onclick=\"SBMM.playRadio('BBC');return false;\">BBC World</a><br/>	<a href=\"#\" onclick=\"SBMM.playRadio('FOX');return false;\">FOX Newstalk</a><br/>	<a href=\"#\" onclick=\"SBMM.playRadio('NPR');return false;\">NPR America</a><br/>	<a href=\"#\" onclick=\"SBMM.playRadio('1010');return false;\">1010 WINS</a></div>", {
			  title: 'Channel',
			  stem: 'topRight',
			  hook: { tip: 'topRight' },
			  closeButton: true,
			  offset: { x: 14, y: 14 },
			 	hideOn: 'click',
			  showOn: 'click',
			  width:90
			});
		} else {
			new Tip($('r-h'), "<div><a href=\"http://microsoft.com/silverlight\" target=\"_blank\">Please install Silverlight plugin!</a></div>", {
			  stem: 'topRight',
			  hook: { tip: 'topRight' },
			  offset: { x: 14, y: 14 },
			 	hideOn: 'click',
			  showOn: 'click',
			  width:90
			});
		}
	},

	playRadio: function(station) {
		pageTracker._trackEvent("Radio", "Play", station);
		Tips.hideAll();
		if (station == 'CNN') {
			station = "mms://a1181.l3760631180.c37606.n.lm.akamaistream.net/D/1181/37606/v0001/reflector:31180";
		} else if (station == 'BBC') {
			station = "mms://livewmstream-ws.bbc.co.uk.edgestreams.net/reflector:47971";
		} else if (station == 'NPR') {
			station = "mms://a1671.l2063252432.c20632.g.lm.akamaistream.net/D/1671/20632/v0001/reflector:52432?v1st=F9E4EF0E7CF6139C&mt=5";
		} else if (station == 'FOX') {
			station = "http://foxnews-foxnewstalk.wm.llnwd.net/foxnews_foxnewstalk";
		} else if (station == '1010') {
			station = "http://provisioning.streamtheworld.com/asx/WINSAMDIALUP.asx";
		}

		var src = 'includes/wmvplayer.xaml';
		var cfg = {file: station,height:'0',width:'0',autostart:"true"};
		SBMM.radio = new jeroenwijering.Player($("rd"), src, cfg);

		$('r-i').src = '/images/m-icons/3.png';
	},

	stopRadio: function() {
		$('r-i').src = '/images/m-icons/3o.png';

		if (SBMM.radio) {
			SBMM.radio.sendEvent('stop');
			SBMM.radio = '';
			$("rd").innerHTML = '';
			pageTracker._trackEvent("Radio", "Stop");
		}
	},

	openPrototypeWindow: function(winName, winTitle, live, top, left, height, width, center, minimized) {
		if (height === undefined) { height = 100; }
		if (width === undefined) { width = 200; }

		if ( UI.defaultWM.getWindow(winName) === undefined ) {
			var wWin = new UI.Window({id: winName, className: 'alphacube', shadow: false, maximize: false, 
						title: winTitle, parent: $('container'), gridX: 15, gridY: 15 });

			wWin.setHeader(winTitle);

			if ( (winName.startsWith('msource-')) || (winName == 'login') || (winName.startsWith('snews-')) || (winName == 'world-index') 
					 || (winName == 'mheadlines') || (winName == 'latest-news') || (winName == 'portfolio') || (winName == 'msources')
					 || (winName.startsWith('stwits-')) || (winName == 'mtwitter') ) {
				wWin.setContent("<div id='" + winName + "-div' class=\"content\"><\/div>");
			} else {
				wWin.setContent("<div id='" + winName + "-div'><\/div>");
			}
			wWin.setSize(width, height);
			wWin.setPosition(top, left);

			if (center) { wWin.center(); }
			if (minimized) { wWin.toggleFold(); }
			wWin.show();
		} else {
			UI.defaultWM.getWindow(winName).activate();
		}
	},

	openUrlWindow: function(u) {
		new UI.URLWindow({width: 800, height: 400, shadow: false, theme: "alphacube", url: u }).show();  
	},

	doParamLoading: function() {
		var t = SBMM.gup("symbol");
		var s = SBMM.gup("s");

		if (t != "") {
			if (s == "") {
				SBMM.reopenWindows("({ windows : [{id: 'tstock-" + t + "', width:200, height:255, left:165, top:45, minimized:false},{id: 'snews-" + t + "', width:315, height:255, left:375, top:45, minimized:false},{id: 'stwits-" + t + "', width:315, height:255, left:705, top:45, minimized:false},{id: 'world-index', width:200, height:405, left:165, top:315, minimized:false},{id: 'chart-" + t + "', width:645, height:405, left:375, top:315, minimized:false}]})");
			} else if (s == "t") {
				var tickers = t.split(",");

				SBMM.reopenWindows("({ windows : [{id: 'stwits-" + tickers[0] + "', width:420, height:255, left:375, top:45, minimized:false},{id: 'tstock-" + tickers[0] + "', width:200, height:255, left:165, top:45, minimized:false},{id: 'tstock-" + tickers[1] + "', width:200, height:255, left:165, top:315, minimized:false},{id: 'tstock-" + tickers[2] + "', width:200, height:255, left:165, top:585, minimized:false},{id: 'stwits-" + tickers[1] + "', width:420, height:255, left:375, top:315, minimized:false},{id: 'stwits-" + tickers[2] + "', width:420, height:255, left:375, top:585, minimized:false},{id: 'tstock-" + tickers[3] + "', width:200, height:255, left:165, top:855, minimized:false},{id: 'tstock-" + tickers[4] + "', width:200, height:255, left:165, top:1125, minimized:false},{id: 'stwits-" + tickers[3] + "', width:420, height:255, left:375, top:855, minimized:false},{id: 'stwits-" + tickers[4] + "', width:420, height:255, left:375, top:1125, minimized:false},{id: 'energy-watch', width:210, height:120, left:810, top:465, minimized:false},{id: 'world-index', width:210, height:405, left:810, top:45, minimized:false},{id: 'currency-watch', width:210, height:120, left:810, top:600, minimized:false}]})");
			}

/*
			if (v == '1') {
				SBMM.reopenWindows("({ windows : [{id: 'fundamentals-" + t + "', width:200, height:120, left:165, top:315, minimized:false},{id: 'chart-" + t + "', width:645, height:390, left:375, top:45, minimized:false},{id: 'stwits-" + t + "', width:420, height:255, left:165, top:450, minimized:false},{id: 'tstock-" + t + "', width:200, height:255, left:165, top:45, minimized:false},{id: 'snews-" + t + "', width:420, height:255, left:600, top:450, minimized:false}]})");
			} else if (v == '2') {
				SBMM.reopenWindows("({ windows : [{id: 'tstock-" + t + "', width:200, height:255, left:165, top:45, minimized:false},{id: 'snews-" + t + "', width:315, height:255, left:375, top:45, minimized:false},{id: 'stwits-" + t + "', width:315, height:255, left:705, top:45, minimized:false},{id: 'world-index', width:200, height:405, left:165, top:315, minimized:false},{id: 'chart-" + t + "', width:645, height:405, left:375, top:315, minimized:false}]})");
			} else {
				SBMM.doStockRetrieve(t);
				SBMM.doServerRequest(SBMM.controlUrl, '3&symbol=' + t, SBMM.drawStockNews);
				SBMM.drawFundamentals(t);
			}
*/
		}
	},

	gup: function(n) {
		n = n.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		var regex = new RegExp("[\\?&]" + n + "=([^&#]*)");
		var results = regex.exec(window.location.href);
		if( results == null ) return "";
		else return results[1];
	},

	parseTicker: function(t) {
		if (t.indexOf("us;") != -1) {
			return t.substring(3, t.length);
		}

		return "";
	},

	prettyDate: function(s, r) {
		if (s) {
			var day = s.substring(4, 16).replace("200", "'0");
			var time = s.substring(16, 22) + " GMT";
	
			var today = new Date();
			var month = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
			var comp = today.getDate() + " " + month[today.getMonth()] + " " + today.getFullYear();
	
			if (s.indexOf(comp) == -1) {
				return day;
			} else {
				return time;
			}
		} else if (r) {
			var year = r.substring(0, 4).replace("200", "'0");
			var month = r.substring(5, 7);
			var day = r.substring(8, 10);
			var hour = r.substring(11, 16);
			
			var monthString = $H({"01":"Jan", "02":"Feb", "03":"Mar", "04":"Apr", "05":"May", "06":"Jun", "07":"Jul", "08":"Aug", "09":"Sep", "10":"Oct", "11":"Nov", "12":"Dec"});
			
			return day + " " + monthString.get(month) + " " + year + " " + hour + " GMT";
		} else {
			var today = new Date();
			var month = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
			var comp = today.getDate() + " " + month[today.getMonth()] + " " + today.getFullYear();
			comp = comp.replace("200", "'0");

			return comp;
		}
	},

	doKeyIntercept: function(e) {
		if (e.which) {
			if (e.which == Event.KEY_RETURN) {
				SBMM.doGetPress();
			}
			return;
		}

		if (window.event.keyCode) {
			if (window.event.keyCode == Event.KEY_RETURN) {
				SBMM.doGetPress();
			}
			return;
		}
	},

	recordWindows: function() {
		var all = "";
		for(var i = 0; i < UI.defaultWM.windows().length; i++) {
			if (all != '') { all += ","; }

			var win = UI.defaultWM.windows()[i];
			all += "{id: '" + win.id + "', width:" + win.getBounds().width + ", height:" + win.getBounds().height + ", left:" + win.getBounds().left + ", top:" + win.getBounds().top + ", minimized:" + win.isMinimized() + "}";
		}

		if (all != '') {
			all = "({ windows : [" + all + "]})";
		}

		return all;
	},

	reopenWindows: function(r) {
		var a = eval(r);

		for (var i = 0; i < a.windows.length; i++) {
			var w = a.windows[i];

			if (w.id == "us-index") { //handle widgets
				SBMM.openPrototypeWindow('us-index', 'US Indexes', true, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doServerRequest(SBMM.controlUrl, '1', SBMM.drawWidgetMarketWatch);
			} else if (w.id === "world-index") {
				SBMM.openPrototypeWindow('world-index', 'World Market Watch', true, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doServerRequest(SBMM.controlUrl, '9', SBMM.drawWidgetWorldWatch);
			} else if (w.id == 'mortgage-watch') {
				SBMM.openPrototypeWindow('mortgage-watch', 'Mortgage Watch', false, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.drawWidgetMortgageWatch();
			} else if (w.id == 'currency-watch') {
				SBMM.openPrototypeWindow('currency-watch', 'Currency Watch', true, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doServerRequest(SBMM.controlUrl, '11', SBMM.drawWidgetCurrencyWatch);
			} else if (w.id == 'treasury-watch') {
				SBMM.openPrototypeWindow('treasury-watch', 'Treasury Monitor', true, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doServerRequest(SBMM.controlUrl, '14', SBMM.drawWidgetTreasuryWatch);
			} else if (w.id == 'energy-watch') {
				SBMM.openPrototypeWindow('energy-watch', 'Energy Monitor', true, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doServerRequest(SBMM.controlUrl, '12&x=e', SBMM.drawWidgetEnergyCommoditiesWatch);
			} else if (w.id == 'metal-watch') {
				SBMM.openPrototypeWindow('metal-watch', 'Metal Monitor', true, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doServerRequest(SBMM.controlUrl, '12&x=m', SBMM.drawWidgetMetalCommoditiesWatch);
			} else if (w.id == 'grain-watch') {
				SBMM.openPrototypeWindow('grain-watch', 'Grain Monitor', true, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doServerRequest(SBMM.controlUrl, '12&x=g', SBMM.drawWidgetGrainCommoditiesWatch);
			} else if (w.id == 'livestock-watch') {
				SBMM.openPrototypeWindow('livestock-watch', 'Livestock Monitor', true, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doServerRequest(SBMM.controlUrl, '12&x=l', SBMM.drawWidgetLivestockCommoditiesWatch);
			} else if (w.id == 'soft-watch') {
				SBMM.openPrototypeWindow('soft-watch', 'Soft Monitor', true, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doServerRequest(SBMM.controlUrl, '12&x=s', SBMM.drawWidgetSoftCommoditiesWatch);
			} else if (w.id == 'etfviewer') {
				SBMM.openPrototypeWindow('etfviewer', 'ETF Viewer', true, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doServerRequest(SBMM.controlUrl, '211&u=ETFs', SBMM.drawWidgetETF);
			} else if (w.id == 'mtwitter-mdt') {
				SBMM.openPrototypeWindow('mtwitter-mdt', 'Twitter Top', true, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doTweeterMostDiscussedTickers();
			} else if (w.id.startsWith("tstock-")) {
				var ticker = w.id.substring(7, w.id.length).toUpperCase();
				SBMM.openPrototypeWindow('tstock-' + ticker, '<img class="icon-header" src="images/m-icons/i.png"/>' + ticker + ' - Stock Info', true, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doServerRequest(SBMM.controlUrl, '2&symbol=' + ticker, SBMM.drawStock);
			} else if (w.id.startsWith("snews-")) {
				var ticker = w.id.substring(6, w.id.length).toUpperCase();
				SBMM.openPrototypeWindow('snews-' + ticker, '<img class="icon-header" src="images/m-icons/n.png"/>' + ticker + ' - Stock News', false, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doServerRequest(SBMM.controlUrl, '3&symbol=' + ticker, SBMM.drawStockNews);
			} else if (w.id.startsWith("stwits-")) {
				var ticker = w.id.substring(7, w.id.length).toUpperCase();
				SBMM.openPrototypeWindow('stwits-' + ticker, '<img class="icon-header" src="images/m-icons/t.png"/>' + ticker + ' - Tweets', false, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doStockTwits(ticker);
			} else if (w.id.startsWith("fundamentals-")) {
				var ticker = w.id.substring(13, w.id.length).toUpperCase();
				SBMM.openPrototypeWindow('fundamentals-' + ticker, '<img class="icon-header" src="images/m-icons/f.png"/>' + ticker + ' - Fund.', false, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.drawFundamentals(ticker);
			} else if (w.id.startsWith("chart-")) {
				var ticker = w.id.substring(6, w.id.length).toUpperCase();
				SBMM.openPrototypeWindow('chart-' + ticker, '<img class="icon-header" src="images/m-icons/c.png"/>' + ticker + ' - Chart', false, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.drawChart(ticker);
			} else if (w.id.startsWith("thistory")) {
				SBMM.openPrototypeWindow('thistory', 'Ticker History', false, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.drawTickerHistory();
			} else if (w.id.startsWith("portfolio")) {
				SBMM.openPrototypeWindow('portfolio', 'Portfolio', true, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doPortfolio();
			} else if (w.id.startsWith("mheadlines")) {
				SBMM.openPrototypeWindow('mheadlines', 'Market Headlines', true, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doMarketHeadlines();
 			} else if (w.id.startsWith("mtwitter")) {
				SBMM.openPrototypeWindow('mtwitter', 'Twitter Stocks River', true, w.top, w.left, w.height, w.width, false, w.minimized);
				SBMM.doTweeterNews();
			} else if (w.id.startsWith("msource-")) {
				var fid = w.id.substring(8, w.id.length);
				SBMM.openPrototypeWindow('msource-' + fid, '<span id="msource-fid-' + fid + '"/>', true, w.top, w.left, w.height, w.width, false, w.minimized);
				$('msource-' + fid + '-div').innerHTML = '<div style="width:100%;height:100%;text-align:center;"><br/><br/><br/><br/><br/>Loading feed..<br/><br/><br/><img src="images/indicator_large.gif"/></div>';
				if (fid.startsWith('f')) {
					SBMM.doServerRequest(SBMM.controlUrl, '10&x=' + SBMM.faveUrl(fid) + '&y=' + fid, SBMM.drawSource);
				} else {
					SBMM.doServerRequest(SBMM.controlUrl, '26&x=' + fid, SBMM.drawSource);
				}
			}
		}
	},

	resetDesktop: function(m) {
		pageTracker._trackEvent("Reset Desktop", "Reset Desktop");

		if (UI.defaultWM.windows().size() == 0) {
			return true;
		}

		if (!m) {
			m = "Are you sure you want to reset this session?\nClick OK to reset it, or Cancel to keep it.";
		}

		var r = confirm(m);

		if (r) {
			try {UI.defaultWM.windows().invoke('destroy');} catch (e) {}
		}

		return r;
	},

	processCookie: function() {
		if ((SBMM.readCookie('c-info')) && (SBMM.readCookie('c-info') == 'off')) { $('checkbox-info').checked = false; }
		if ((SBMM.readCookie('c-news')) && (SBMM.readCookie('c-news') == 'off')) { $('checkbox-news').checked = false; }
		if ((SBMM.readCookie('c-twits')) && (SBMM.readCookie('c-twits') == 'off')) { $('checkbox-twits').checked = false; }
		if ((SBMM.readCookie('c-fund')) && (SBMM.readCookie('c-fund') == 'off')) { $('checkbox-fundamentals').checked = false; }
		if ((SBMM.readCookie('c-chart')) && (SBMM.readCookie('c-chart') == 'off')) { $('checkbox-chart').checked = false; }
		if (SBMM.readCookie('mhc')) { SBMM.mhChannel = SBMM.readCookie('mhc'); }
		if (SBMM.readCookie('mhc2')) { SBMM.mhChannel2 = SBMM.readCookie('mhc2'); }

		if (SBMM.readCookie('t-hist')) {
		var th = (SBMM.readCookie('t-hist')).split('!');
			if ( (th !== '') && (th !== undefined) ) { 
				for (var i = 0; i < th.length; i++) {
					if ( (th[i].split('~')[0] !== '') && (th[i].split('~')[0] !== undefined) ) {
						var q = new TickerHistoryQuote(th[i].split('~')[0], th[i].split('~')[1]);
						SBMM.ticker_array.push(q);
					}
				}
			}
		}
	},

	setCookie: function(name, value) {
	    var d = new Date("December 31, 2023");
	    var cd = d.toGMTString();
	    var c = name + "=" + escape(value);
	    c = c + ";expires=" + cd;
	    document.cookie = c;
	},

	readCookie: function(name) {
		if (document.cookie === '') {
			return false;
		} else {
			var firstChar, lastChar;
			var c = document.cookie;
			firstChar = c.indexOf(name);
			if (firstChar != -1)  {
				firstChar += name.length + 1;
				lastChar = c.indexOf(';', firstChar);
				if (lastChar == -1) { lastChar = c.length; }
				return unescape(c.substring(firstChar, lastChar));
			} else {
				return false;
			}
		}
 	},

 	expireCookie: function(name) {
		var d = new Date("December 31, 2000");
		var cd = d.toGMTString();
		var c = name +"=";
   	c = c + ";expires=" + cd;
   	document.cookie = c;
	},

	doServerRequest: function (ep, a, cb) {
		new Ajax.Request(ep, { evalJS: false, evalJSON: false, sanitizeJSON: false, method: 'post', parameters: 'actionName=' + a, onComplete: cb });
	}
}

Effect.CashRegister = Class.create();
Effect.CashRegister.prototype = {
	initialize: function(n, v) {
		$(n).innerHTML = v;
	}
};

var FlashProxy = {callJS: function () {}};

Event.observe(window, 'load', SBMM.doStart);
