/*------------------------------------------------------------------------------

BusinessWeek
Common Scripts
Version: 1.0
Copyright: (c) 2006 by The McGraw-Hill Companies Inc. All Rights Reserved

------------------------------------------------------------------------------*/

/*- Run On Load --------------------------------------------------------------*/

// window.onload listener to share event with multiple functions
// Based on runOnLoad function from 
// "JavaScript: The Definitive Guide", 5th ed, p.434, example 17-7

runOnLoad.functionsQueue = new Array();
runOnLoad.isLoaded = false;

function runOnLoad(functionCall) {
	if (runOnLoad.isLoaded) functionCall();
	else runOnLoad.functionsQueue.push(functionCall);
}

runOnLoad.run = function() {
	if (runOnLoad.isLoaded) return;
	for (var i = 0; i < runOnLoad.functionsQueue.length; i++) {	
		//
		// runOnLoad.functionsQueue[i]();
		//
		try { runOnLoad.functionsQueue[i](); }		
		catch(functionError) { 
			if (functionError instanceof Error) {
				alert(functionError.name + ": " + functionError.message);
			}
		}
	}
	runOnLoad.isLoaded = true;
	delete runOnLoad.functionsQueue;
	delete runOnLoad.run;
};

if (window.addEventListener) {
	window.addEventListener("load", runOnLoad.run, false);
} else if (window.attachEvent) {
	window.attachEvent("onload", runOnLoad.run)
} else {
	window.onload = runOnLoad.run;
}

//
//
// REGISTER FUNCTIONS WITH runOnLoad HERE
runOnLoad(checkRelatedItems);
runOnLoad(addReaderComments);
runOnLoad(updateTabBox);
runOnLoad(addTextSizer);
runOnLoad(addHover);
runOnLoad(initLinkRels);
runOnLoad(checkPartner);
runOnLoad(getAuthorArticles);
// runOnLoad(initStockHistory);
//
//

/*- Create XMLHttpRequest Object ---------------------------------------------*/

function getHTTPObject() {
	if (window.ActiveXObject) {		
		var requestObject = new ActiveXObject("Microsoft.XMLHTTP");
	} else if (window.XMLHttpRequest) {
		var requestObject = new XMLHttpRequest();
	} else {
		var requestObject = false;
	}
	return requestObject;
}

/*- Generic XML Parser -------------------------------------------------------*/

// takes serialized XML string and returns XML object

function parseXML(text) {
	if(typeof DOMParser != "undefined") {
		return (new DOMParser()).parseFromString(text, "application/xml");
	} else if (typeof ActiveXObject != "undefined") {		
		var doc = new ActiveXObject("Microsoft.XMLDOM");
		doc.async = "false";
		doc.loadXML(text);
		return doc;
	} else {
		var url = "data:text/xml;charset=utf-8," + encodeURIComponent(text);
		var request = new XMLHttpRequest();
		request.open("GET", url, false);
		request.send(null);
		return request.responseXML;
	}
}

/*- SWF Data Gateway ---------------------------------------------------------*/

var gatewaySWF;
var gatewayIsLoaded = false;
var gatewayCheckInterval;
var gatewayQueue = new Array();

function constructGatewaySWF() {

	var baseURL = String(location);
	baseURL = baseURL.match(/http:\/\/([^\/]+).*/);
	baseURL = baseURL[1];
	
	var cacheKiller = new Date();
	
	var gatewaySWFWrapper = document.createElement("div");
	gatewaySWFWrapper.setAttribute("id", "gatewaySWFWrapper");
	var footer = document.getElementById("footer");
	footer.appendChild(gatewaySWFWrapper);
	
	var so = new SWFObject("http://" + baseURL + "/gateway.swf?cacheKiller=" + cacheKiller.getTime(), "gatewaySWF", "1", "1", "8");
	so.addParam("allowScriptAccess", "always");
	so.write("gatewaySWFWrapper");
	gatewaySWF = document.getElementById("gatewaySWF");
	gatewayCheckInterval = setInterval(gatewayCheck, 10);
}

function gatewayCheck() {
	if (gatewayIsLoaded) {		
		clearInterval(gatewayCheckInterval);	
		//
		// go through array to see if any requests were waiting...
		if (gatewayQueue.length != 0) {
			for (var i = 0; i < gatewayQueue.length; i++) {
				var storedRequest = gatewayQueue.shift();
				gatewayRequest(storedRequest.source, storedRequest.handler);
			}
		}
	}
}

function gatewayRequest(dataSource, dataHandler) {
	if (gatewayIsLoaded) {	
		gatewaySWF.getData(dataSource, dataHandler);
	} else {
		var request = new Object();
		request.source = dataSource;
		request.handler = dataHandler;
		gatewayQueue.push(request);
	}
}

function setGatewayStatus(status) {
	gatewayIsLoaded = status;
}

/*- Query String Values ------------------------------------------------------*/

// Gets, parses URL query string values into an object
// See "JavaScript: The Definitive Guide", 5th ed, p.272, example 14-1

var queryStringValues = getQueryStringValues();

function getQueryStringValues() {
	var args = new Object();
	var query = location.search.substring(1);
	var pairs = query.split("&");
	for (var i = 0; i < pairs.length; i++) {
		var pos = pairs[i].indexOf("=");
		if (pos == -1) continue;
		var argName = pairs[i].substring(0, pos);
		var value = pairs[i].substring(pos + 1);
		value = decodeURIComponent(value);
		args[argName] = value;
	}
	return args;
}

/*- Related Items ------------------------------------------------------------*/

var relatedItemsRequestObject;
var relatedItemsSource;
var relatedItemsTitle;

function checkRelatedItems() {
	if (!document.getElementById) return false;
	if (!document.getElementsByTagName) return false;
	//
	// check this page has an inset area...
	if (!document.getElementById("inset")) return false;
	//
	// check if there are already special report links...
	if (document.getElementById("specialReport")) return false;
	//
	// check if there are already Related Items...
	if (document.getElementById("relatedItems")) return false;
	//
	relatedItemsRequestObject = getHTTPObject();	
	determineRelatedItemsSource();
}

function determineRelatedItemsSource() {
	var baseURL = String(location);
	baseURL = baseURL.match(/http:\/\/([^\/]+).*/);
	baseURL = baseURL[1];
	
	var bodyClass = document.getElementsByTagName("body")[0].className;	
	if (bodyClass != "" && bodyClass.indexOf(" ") != -1) {
		bodyClass = bodyClass.substring(0, bodyClass.indexOf(" "));
	}
	switch (bodyClass) {
		case "topNews": relatedItemsSource = "http://" + baseURL + "/feed_rss/bwdaily.rss"; relatedItemsTitle = "BW Exclusives"; break;
		case "asia": relatedItemsSource = "http://" + baseURL + "/feed_rss/asia.rss"; relatedItemsTitle = "Asia"; break;
		case "europe": relatedItemsSource = "http://" + baseURL + "/feed_rss/europe.rss"; relatedItemsTitle = "Europe"; break;
		case "investing": relatedItemsSource = "http://" + baseURL + "/feed_rss/investor.rss"; relatedItemsTitle = "Investing"; break;
		case "technology": relatedItemsSource = "http://" + baseURL + "/feed_rss/technology.rss"; relatedItemsTitle = "Technology"; break;
		case "autos": relatedItemsSource = "http://" + baseURL + "/feed_rss/autos.rss"; relatedItemsTitle = "Autos"; break;
		case "innovation": relatedItemsSource = "http://" + baseURL + "/feed_rss/innovate.rss"; relatedItemsTitle = "Innovation & Design"; break;
		case "smallBiz": relatedItemsSource = "http://" + baseURL + "/feed_rss/smallbiz.rss"; relatedItemsTitle = "Small Biz"; break;
		case "bSchools": relatedItemsSource = "http://" + baseURL + "/feed_rss/bschools.rss"; relatedItemsTitle = "B-Schools"; break;
		case "careers": relatedItemsSource = "http://" + baseURL + "/feed_rss/careers.rss"; relatedItemsTitle = "Careers"; break;
		case "magazine": relatedItemsSource = "http://" + baseURL + "/feed_rss/magazine.rss"; relatedItemsTitle = "BW Magazine"; break;
		default: relatedItemsSource = "http://" + baseURL + "/feed_rss/bwdaily.rss"; relatedItemsTitle = "BW Exclusives"; break;
	}
	getRelatedItems();
}

function getRelatedItems() {
	if (!relatedItemsRequestObject) return false;
	relatedItemsRequestObject.open("GET", relatedItemsSource, true);
	relatedItemsRequestObject.onreadystatechange = processRelatedItems;
	relatedItemsRequestObject.send(null);
}

function processRelatedItems(data) {

	if (relatedItemsRequestObject.readyState == 4) {	
		var sourceXML = parseXML(relatedItemsRequestObject.responseText);
		
		var relatedItemsModule = document.createElement("div");
		relatedItemsModule.className = "module";
		relatedItemsModule.setAttribute("id", "relatedItems");
		var relatedItemsHeading = document.createElement("h2");
		relatedItemsModule.appendChild(relatedItemsHeading);
		var relatedItemsList = document.createElement("ul");
		relatedItemsModule.appendChild(relatedItemsList);
		
		var itemsArray = sourceXML.getElementsByTagName("item")
		for (var i = 0; i < 5; i++) {
			var title = itemsArray[i].getElementsByTagName("title")[0].firstChild.nodeValue;
			var link = itemsArray[i].getElementsByTagName("link")[0].firstChild.nodeValue.split("?")[0];
			var newRelatedItem = document.createElement("li");
			var newLink = document.createElement("a");
			newLink.setAttribute("href", link);
			var linkText = document.createTextNode(title);
			newLink.appendChild(linkText);			
			newRelatedItem.appendChild(newLink);
			relatedItemsList.appendChild(newRelatedItem);
		}
		
		var relatedItemsHeadingText = document.createTextNode(relatedItemsTitle);
		relatedItemsHeading.appendChild(relatedItemsHeadingText);
		var insetContent = document.getElementById("insetContent");
		insetContent.insertBefore(relatedItemsModule, insetContent.firstChild);
	}
}

/*- Author Bio Articles ------------------------------------------------------*/

function getAuthorArticles() {
	if (!document.getElementById) return false;
	if (!document.getElementsByTagName) return false;
	//
	var storyBody = document.getElementById("storyBody");
	if (!storyBody) return false;
	//
	if (storyBody.className.indexOf("authorBio") == -1) return false;
	var authorName = storyBody.getElementsByTagName("h1")[0].firstChild.nodeValue;
	authorName = encodeURIComponent(authorName);
	var dataSource = "http://search.businessweek.com/Search?searchTerm=author:" + authorName + "&skin=rss&sortBy=pub_date%20desc&maxResultsReturned=10";
	//
	constructGatewaySWF();
	gatewayRequest(dataSource, "processAuthorArticles");
}

function processAuthorArticles(data) {
	if (!data) return false;
	
	/*
	if (!data) {
		alert("Error loading XML!");
	}
	*/
	
	var dataXML = parseXML(data);
	var itemsArray = dataXML.getElementsByTagName("item");
	//
	if (itemsArray.length > 0) {
		var storyBody = document.getElementById("storyBody");
		var paragraphs = storyBody.getElementsByTagName("p");
		for (var i = 0; i < paragraphs.length; i++) {
			var paragraphClass = paragraphs[i].className;			
			if (paragraphClass == "moreLink") {
				var moreLink = paragraphs[i];
				break;
			}
		}
		var module = document.createElement("div");
		module.className = "module";
		var heading = document.createElement("h2");
		var headingText = document.createTextNode("Recent Articles");
		heading.appendChild(headingText);
		module.appendChild(heading);
		storyBody.insertBefore(module, moreLink);
	}
	
	for (var j = 0; j < itemsArray.length; j++) {
		var item = itemsArray[j];
	
		var dateStamp = document.createElement("p");
		dateStamp.className = "date";
		var pubDate = item.getElementsByTagName("pubDate")[0].firstChild.nodeValue
		var month = pubDate.substr(8, 3);
		month = translateMonth(month);
		var day = pubDate.substr(5, 2);
		if (day.charAt(0) == "0") {day = day.substr(1, 1);}
		var year = pubDate.substr(12, 4);
		pubDate = month + " " + day + ", " + year;
		var dateText = document.createTextNode(pubDate);
		dateStamp.appendChild(dateText);
		module.appendChild(dateStamp);
	
		var subheading = document.createElement("h3");
		var subheadingLink = document.createElement("a");
		subheadingLink.setAttribute("href", item.getElementsByTagName("link")[0].firstChild.nodeValue.split("?")[0]);
		subHeadingText = document.createTextNode(item.getElementsByTagName("title")[0].firstChild.nodeValue);
		subheadingLink.appendChild(subHeadingText);
		subheading.appendChild(subheadingLink);
		module.appendChild(subheading);

		var description = document.createElement("p");
		var descriptionText = document.createTextNode(item.getElementsByTagName("description")[0].firstChild.nodeValue);
		description.appendChild(descriptionText);
		module.appendChild(description);
	}
}

function translateMonth(month) {
	switch (month) {
		case "Jan": var translatedMonth = "January"; break;
		case "Feb":	var translatedMonth = "February"; break;
		case "Mar":	var translatedMonth = "March"; break;
		case "Apr":	var translatedMonth = "April"; break;
		case "May":	var translatedMonth = "May"; break;
		case "Jun":	var translatedMonth = "June"; break;
		case "Jul":	var translatedMonth = "July"; break;
		case "Aug":	var translatedMonth = "August";	break;
		case "Sep":	var translatedMonth = "September"; break;
		case "Oct":	var translatedMonth = "October"; break;
		case "Nov": var translatedMonth = "November"; break;
		case "Dec":	var translatedMonth = "December"; break;
	}
	return translatedMonth;
}

/*- Add Hover Support --------------------------------------------------------*/

// dynamically adds .hover class to elements for browsers with poor :hover
// pseudo-class support. Only applied to main nav LI elements. 
// Checking for document.defaultView because checking for
// document.defaultView.getComputedStyle will generate an error in IE

function addHover() {
	if (!document.getElementById) return false;
	if (!document.getElementsByTagName) return false;
	if (!document.defaultView) {	
		nav = document.getElementById("navigation");
		if (!nav) return false;
		navListItems = nav.getElementsByTagName("li");
		for (i = 0; i < navListItems.length; i++) {
			var node = navListItems[i];
			if (node.nodeName == "LI") {
				node.onmouseover = function() {
					this.className += " hover";
				};
				node.onmouseout = function() {
					this.className = this.className.replace(" hover", "");
				};
			}
		}
	}
}

/*- "Most Popular" Module Tab Switching --------------------------------------*/

function updateTabBox() {
	if (!document.getElementById) return false;
	if (!document.getElementsByTagName) return false;
	//
	var divArray = document.getElementsByTagName("div");
	for (var i = 0; i < divArray.length; i++) {
		var divClass = divArray[i].className;
		if (divClass != null && divClass.indexOf("tabBox") != -1) {
			var tabs = divArray[i].getElementsByTagName("ul")[0].getElementsByTagName("li");
			for (var j = 0; j < tabs.length; j++) {
				var tabLink = tabs[j].getElementsByTagName("a")[0];
				tabLink.onclick = function() {
					var tabClass = this.parentNode.className;
					var tabBoxID = this.parentNode.parentNode.parentNode.getAttribute("id");
					var tabBox = document.getElementById(tabBoxID)		
					tabBox.className = "module tabBox " + tabClass;
					return false;
				};
			}
		}
	}
}

/*- Reader Comments ----------------------------------------------------------*/

function addReaderComments() {
	if (!document.getElementById) return false;
	if (!document.createElement) return false;
	var readerComments = document.getElementById("readerComments");
	if (!readerComments) return false;
	
	var para = readerComments.getElementsByTagName("p")[0];
	var paraID = para.getAttribute("id");
	if (paraID == "reviewsLink") {
		var frameID = "reviewDisplay";
	} else {
		var frameID = "commentDisplay";
	}	
	
	var sourceLink = para.firstChild.href;
	var productID = sourceLink.match(/productid=(\d+)/i);
	productID = productID[1];
	var productCode = sourceLink.match(/productCode=(\w+)/i);
	productCode = productCode[1];
	var baseURL = sourceLink.match(/http:\/\/([^\/]+).*/);
	baseURL = baseURL[1];	
	var commentURL = "http://" + baseURL + "/UserComments/combo_review?action=list&style=wide&productId=" + productID + "&initialView=true&productCode=" + productCode;
	
	var commentFrame = document.createElement("iframe");
	commentFrame.setAttribute("src", commentURL);
	commentFrame.setAttribute("frameBorder", "0");

	var container = document.createElement("div");
	container.appendChild(commentFrame);
	readerComments.replaceChild(container, para);
	
	// set id attribute after replaceChild
	// otherwise Safari chokes retrieving the source page
	commentFrame.setAttribute("id", frameID);
}

/*- Stylesheet Switcher ------------------------------------------------------*/

function addTextSizer() {
	if (!document.getElementById) return false;
	if (!document.createElement) return false;
	if (!document.createTextNode) return false;
	//
	var strapBox = document.getElementById("strapBox");
	if (!strapBox) return false;
	//
	var textSizer = document.createElement("span");
	textSizer.setAttribute("id", "textSizer");
	//
	var title = document.createTextNode("text size: ");
	//
	var link1 = document.createElement("a");
	link1.className = "normal current"
	link1.setAttribute("href", "#");
	var link1Text = document.createTextNode("T");
	link1.appendChild(link1Text);
	link1.onclick = function() {
		setActiveStyleSheet("default");
		link1.className = "normal current";
		link2.className = "large";
		return false;
	};
	//
	var link2 = document.createElement("a");
	link2.className = "large";
	link2.setAttribute("href", "#");
	var link2Text = document.createTextNode("T");
	link2.appendChild(link2Text);
	link2.onclick = function() {
		setActiveStyleSheet("large text");
		link1.className = "normal";
		link2.className = "large current";
		return false;
	};
	//
	textSizer.appendChild(title);
	textSizer.appendChild(link1);
	textSizer.appendChild(link2);
	//
	strapBox.appendChild(textSizer);
}

function setActiveStyleSheet(title) {
	var i, a, main;
	for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
		if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
		  a.disabled = true;
		  if(a.getAttribute("title") == title) a.disabled = false;
		}
	}
}

function getActiveStyleSheet() {
	var i, a;
	for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
		if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
	}
	return null;
}

/*

function getPreferredStyleSheet() {
	var i, a;
	for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
		if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("rel").indexOf("alt") == -1 && a.getAttribute("title")) return a.getAttribute("title");
	}
	return null;
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

window.onload = function(e) {
	var cookie = readCookie("style");
	var title = cookie ? cookie : getPreferredStyleSheet();
	setActiveStyleSheet(title);
}

window.onunload = function(e) {
	var title = getActiveStyleSheet();
	createCookie("style", title, 365);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);

*/

/*- Init Link Relationship Attributes ----------------------------------------*/

// enables popup links, tickers

function initLinkRels() {
	if (!document.getElementsByTagName) return false;
	var anchors = document.getElementsByTagName("a");
	for (var i = 0; i < anchors.length; i++) {
		var anchor = anchors[i];		
		// would have used getAttribute("rel") but cross-browser consistency 
		// on the return value is a mess when the attribute isn't present
		if (anchor.rel != "") {
			switch (anchor.rel) {
				case "popup":
					if (anchor.href.indexOf("popupWidth") != -1) {
						var popupWidth = anchor.href.match(/popupWidth=(\d+)/i)[1];
					} else {
						var popupWidth = 770;
					}
					if (anchor.href.indexOf("popupHeight") != -1) {
						var popupHeight = anchor.href.match(/popupHeight=(\d+)/i)[1];
					} else {
						var popupHeight = 600;
					}
					var attributes = "target=popwin,resizable=yes,width=" + popupWidth + ",height=" + popupHeight;
					var link = anchor.href;
					anchor.onclick = setPopup(link, attributes);
					break;
				case "newwindow":
					anchor.target = "_blank"; 
					break;
				case "newparent":
					anchor.target = "_parent"; 
					break;
				case "ticker":
					var symbol = anchor.firstChild.nodeValue;
					// anchor.href="http://stockmarket.businessweek.com/www/search.html?q=" + symbol;
					anchor.href="http://investing.businessweek.com/research/stocks/snapshot/snapshot.asp?symbol=" + symbol;
			}
		}
	}
}

function setPopup(link, attributes) {
	return function() {
		window.open(link, "popwin", attributes);	
		return false;
	};
}

/*- Partner Hats -------------------------------------------------------------*/

function checkPartner() {
	for (var i in queryStringValues) {
		if (i == "campaign_id") {
			switch (queryStringValues[i]) {		
				case "yhoo":
					addPartnerHat("http://images.businessweek.com/gen/partner_hats/yahoo_finance_130x30.gif", 130, 30, "Go to Yahoo Finance", "http://finance.yahoo.com/");
					break;
				case "yhoouk":
					addPartnerHat("http://images.businessweek.com/gen/partner_hats/yahoouk_finance_170x30.gif", 170, 30, "Go to Yahoo UK Finance", "http://uk.finance.yahoo.com/");
					break;
				case "twxa":
					addPartnerHat("http://images.businessweek.com/gen/partner_hats/aol_finance_238x30.gif", 238, 30, "Go to AOL Personal Finance", "http://money.aol.com/");
					break;
				case "djm":
					addPartnerHat("http://images.businessweek.com/gen/partner_hats/cbs_marketwatch_161x30.gif", 161, 30, "Return to MarketWatch");
					break;
				case "twxn":
					addPartnerHat("http://images.businessweek.com/gen/partner_hats/netscape_105x30.gif", 105, 30, "Go to Netscape", "http://www.netscape.com/");
					break;
				case "twxc":
					addPartnerHat("http://images.businessweek.com/gen/partner_hats/compuserve_120x30.gif", 120, 30, "Go to CompuServe", "http://www.compuserve.com/");
					break;
			}
		}
	}
}

function addPartnerHat(imageURL, imageWidth, imageHeight, linkTitle, linkURL) {
	if (!document.createElement) return false;
	//
	var partnerHat = document.createElement("div");
	partnerHat.className = "partnerHat";
	//
	var partnerHatLink = document.createElement("a");
	partnerHatLink.setAttribute("title", linkTitle);
	if (linkURL == undefined) {
		partnerHatLink.setAttribute("href", "javascript:history.back();");
	} else {
		partnerHatLink.setAttribute("href", linkURL);
	}
	//
	var partnerImage = document.createElement("img");
	partnerImage.setAttribute("src", imageURL);
	partnerImage.setAttribute("alt", "");
	partnerImage.setAttribute("width", imageWidth);
	partnerImage.setAttribute("height", imageHeight);
	//
	partnerHatLink.appendChild(partnerImage);
	partnerHat.appendChild(partnerHatLink);
	var body = document.getElementsByTagName("body")[0];
	body.insertBefore(partnerHat, body.firstChild);
}

/*- Stock Quotes "Breadcrumbs" -----------------------------------------------*/

function initStockHistory() {
	if (!document.getElementById) return false;
	if (!document.getElementsByTagName) return false;
	//
	var storyBody = document.getElementById("storyBody");
	if (!storyBody) return false;
	//


	/*
	var commentFrame = document.createElement("iframe");
	commentFrame.setAttribute("src", commentURL);
	commentFrame.setAttribute("frameBorder", "0");
	*/

	
	//
	// create Stock Quote box w/ optional browsing history
	//
	
	// form creation 
	
	var column2 = document.getElementById("column2");
	var mostPopularMedia = document.getElementById("mostPopularMedia");	
	
	var rrQuoteBox = document.createElement("div");
	rrQuoteBox.className = "module";
	rrQuoteBox.setAttribute("id", "rrQuoteBox");
	
	var rrTitle = document.createElement("h2");
	var rrTitleText = document.createTextNode("Stock Quotes");
	rrTitle.appendChild(rrTitleText);
	
	rrQuoteBox.appendChild(rrTitle);

	var rrForm = document.createElement("form");
	rrForm.setAttribute("action", "http://investing.businessweek.com/research/stocks/snapshot/snapshot.asp");
	rrForm.setAttribute("method", "get");
	rrForm.setAttribute("id", "frmLookup");
	rrForm.setAttribute("name", "frmLookup");
	rrQuoteBox.appendChild(rrForm);

	var rrFieldset = document.createElement("fieldset");
	rrForm.appendChild(rrFieldset);
	
	var rrTextInput = document.createElement("input");
	rrTextInput.className = "symbol";
	rrTextInput.setAttribute("type", "text");
	rrTextInput.setAttribute("name", "symbol");
	rrTextInput.setAttribute("value", "Stock, Fund, or ETF");
	rrTextInput.setAttribute("onfocus", "if(this.value == 'Stock, Fund, or ETF') this.value = '';");
	rrTextInput.setAttribute("onblur", "if(this.value == '' || this.value == ' ') this.value = 'Stock, Fund, or ETF';");
	rrFieldset.appendChild(rrTextInput);
	
	var rrImgInput = document.createElement("input");
	rrImgInput.setAttribute("type", "image");
	rrImgInput.setAttribute("name", "submit");
	rrImgInput.setAttribute("src", "http://images.businessweek.com/gen/buttons/stock_go_btn.gif");
	rrFieldset.appendChild(rrImgInput);
	
	var lookupLink = document.createElement("a");
	lookupLink.setAttribute("href", "http://investing.businessweek.com/research/common/symbollookup/symbollookup.asp");
	rrFieldset.appendChild(lookupLink);
	var lookupLinkText = document.createTextNode("Company Lookup");
	lookupLink.appendChild(lookupLinkText);
	
	// table creation
	
	/*
	var rrTable = document.createElement("table");
	rrTable.setAttribute("summary", "Brief stock information for recently viewed companies");
	rrQuoteBox.appendChild(rrTable);
	
	var rrTableHead = document.createElement("thead");
	rrTable.appendChild(rrTableHead);
	
	var tr = document.createElement("tr");
	rrTableHead.appendChild(tr);
	
	var td = document.createElement("td");
	td.setAttribute("colspan", "4");
	tr.appendChild(td);
	
	var tdText = document.createTextNode("Recently Viewed");
	td.appendChild(tdText);

	var rrTableBody = document.createElement("tbody");
	rrTable.appendChild(rrTableBody);
	*/
	
	/*
	var tr = document.createElement("tr");
	rrTableBody.appendChild();
	*/
	
	
	
	/*
	var note = document.createElement("p");
	note.className = "note";
	rrQuoteBox.appendChild(note);
	
	var noteText = document.createTextNode("Market data is delayed at least 15 minutes");
	note.appendChild(noteText);
	*/
	
	column2.insertBefore(rrQuoteBox, mostPopularMedia);
}


	




function handleResponse(msg) {
	// alert("handleResponse() called -->" + msg.firstChild);
	// alert(msg);	
}








/*- LEGACY FUNCTIONS ---------------------------------------------------------*/

/*- changeVis ----------------------------------------------------------------*/

// for hide & reveal menus, lists

function changeVis(elName) {
	var box = document.getElementById(elName);
	if (box != null) {
		var display = box.style.display;	
		if (display != "block") {
			box.style.display = "block";
		} else {
			box.style.display = "none";
		}
	}
}

/*- linkTo -------------------------------------------------------------------*/

// for using form dropdowns as regular links

function linkTo(option) {
	window.location = option.value;
}


