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

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

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

//Load common scripts
document.write(''
	+ '<script src="http://res.businessweek.com/scripts/jquery.js" type="text/javascript"></script>\n' //jQuery library
	+ '<script src="http://res.businessweek.com/scripts/jquery-ui.js" type="text/javascript"></script>\n' //jQuery UI widgets
	+ '<script src="http://res.businessweek.com/scripts/common_jquery.js" type="text/javascript"></script>\n'
	+ '<script src="http://res.businessweek.com/scripts/adv_search.js" type="text/javascript"></script>\n' //Adv Search module
);

// add LinkedIn scripts
document.write('<script src="http://www.linkedin.com/companyInsider?script&useBorder=no" type="text/javascript"></script>');

/*- 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);
//
//

/*- 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;
	}
}

/*- 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"; relatedItemsCampaignId = "bwdaily_related"; break;
		case "asia": relatedItemsSource = "http://" + baseURL + "/feed_rss/asia.rss"; relatedItemsTitle = "Asia"; relatedItemsCampaignId = "asia_related"; break;
		case "europe": relatedItemsSource = "http://" + baseURL + "/feed_rss/europe.rss"; relatedItemsTitle = "Europe"; relatedItemsCampaignId = "europe_related"; break;
		case "investing": relatedItemsSource = "http://" + baseURL + "/feed_rss/investor.rss"; relatedItemsTitle = "Investing"; relatedItemsCampaignId = "investing_related"; break;
		case "technology": relatedItemsSource = "http://" + baseURL + "/feed_rss/technology.rss"; relatedItemsTitle = "Technology"; relatedItemsCampaignId = "technology_related"; break;
		case "autos": relatedItemsSource = "http://" + baseURL + "/feed_rss/lifestyle.rss"; relatedItemsTitle = "Autos"; relatedItemsCampaignId = "lifestyle_related"; break;
		case "innovation": relatedItemsSource = "http://" + baseURL + "/feed_rss/innovate.rss"; relatedItemsTitle = "Innovation & Design"; relatedItemsCampaignId = "innovation_related"; break;
		case "smallBiz": relatedItemsSource = "http://" + baseURL + "/feed_rss/smallbiz.rss"; relatedItemsTitle = "Small Biz"; relatedItemsCampaignId = "smallbiz_related"; break;
		case "bSchools": relatedItemsSource = "http://" + baseURL + "/feed_rss/bschools.rss"; relatedItemsTitle = "B-Schools"; relatedItemsCampaignId = "bschools_related"; break;
		case "careers": relatedItemsSource = "http://" + baseURL + "/feed_rss/managing.rss"; relatedItemsTitle = "Careers"; relatedItemsCampaignId = "managing_related"; break;
		case "managing": relatedItemsSource = "http://" + baseURL + "/feed_rss/managing.rss"; relatedItemsTitle = "Managing"; relatedItemsCampaignId = "managing_related"; break;
		case "magazine": relatedItemsSource = "http://" + baseURL + "/feed_rss/magazine.rss"; relatedItemsTitle = "BW Magazine"; relatedItemsCampaignId = "magazine_related"; break;
		case "lifestyle": relatedItemsSource = "http://" + baseURL + "/feed_rss/lifestyle.rss"; relatedItemsTitle = "Lifestyle"; relatedItemsCampaignId = "lifestyle_related"; break;
		default: relatedItemsSource = "http://" + baseURL + "/feed_rss/bwdaily.rss"; relatedItemsTitle = "BW Exclusives"; relatedItemsCampaignId = "default_related"; 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] + "?campaign_id=" + relatedItemsCampaignId;
			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&resultsPerPage=10";
	gatewayRequest(dataSource, "processAuthorArticles");
}

function processAuthorArticles(data) {
	if (!data) return false;
	//
	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);
		if (moreLink) {
			storyBody.insertBefore(module, moreLink);
		} else {
			storyBody.appendChild(module);
		}
	}
	
	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 Main Nav 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 ----------------------------------------------------------*/

var readerCommentsOffline = false;

function addReaderComments() {
	if (!document.getElementById) return false;
	if (!document.createElement) return false;
	
	// abort if story is cached at content.businessweek.com
	var baseURL = String(location);
	baseURL = baseURL.match(/http:\/\/([^\/]+).*/);
	baseURL = baseURL[1];
	if (baseURL == "content.businessweek.com") return false;

	var readerComments = document.getElementById("readerComments");
	if (!readerComments) return false;
	
	var para = readerComments.getElementsByTagName("p")[0];

	if (readerCommentsOffline) {
		
		para.removeChild(para.getElementsByTagName("a")[0]);
		var commentsOfflineMessage = document.createTextNode("Reader comments are undergoing maintenance and will be available again shortly.");
		para.appendChild(commentsOfflineMessage);
		
	} else {	
		
		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");
		commentFrame.setAttribute("scrolling", "no");
		
		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 ----------------------------------------*/

// set default window name 
// popups can then refer links back to parent window
name = "businessweek";

// 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("images.businessweek.com") == -1) {				
						if (anchor.href.indexOf("popupWidth") != -1) {
							var popupWidth = anchor.href.match(/popupWidth=(\d+)/i)[1];
						} else {
							var popupWidth = 820;
						}
						if (anchor.href.indexOf("popupHeight") != -1) {
							var popupHeight = anchor.href.match(/popupHeight=(\d+)/i)[1];
						} else {
							var popupHeight = 650;
						}
						var attributes = "target=popwin,resizable=yes,scrollbars=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);
}

/*- 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;
}


