// Common functions for interactives; Author - Brenden West

var bCommonBrill = true;
var sSpacer = "<SPACER TYPE=BLOCK WIDTH=1>";

function getAppDefaults(oData) {
	if(!window.oSniff) oSniff=new UberSniff();
	window.bDhtml = (oSniff.ie >= 4 || oSniff.nn >= 4) ? true : false;
	aQuery = getQueryParams(); 
	oData.nCurPage = (oData.nCurPage) ? oData.nCurPage : (aQuery["page"]) ? aQuery["page"] : 0;

	var parentData = (aQuery["parentid"]) ? eval("top."+aQuery["parentid"]) : "";

	if (oData.sName) { oData.ID = oData.sName; }
	if (!oData.appHeader) { oData.appHeader = (window.appHeader) ? appHeader : ""; }
	if (!oData.appDeck) { oData.appDeck = (window.appDeck) ? appDeck : ""; }

	if (parentData) { oData.appWidth = parentData.copyWidth-18-2*parentData.copyMargin; }
	else if (aQuery["w"]) { oData.appWidth = aQuery["w"]; }
	else if (!oData.appWidth) { oData.appWidth = 460; }

	if (parentData || oData.copyBorder == 0) { oData.copyBorder = "border:0px;"; }
	else if (!(oData.copyBorder==0)) { oData.copyBorder = "border:1px #CCCCCC solid;";oData.appWidth -= 2; }
	if (!oData.copyWidth) { oData.copyWidth = oData.appWidth; }

	if (oData.copyHeight == null) { oData.copyHeight = ""; }
	if (!oData.appLayout) { oData.appLayout = 1; }

	if (parentData) { oData.appBG = parentData.appBG[1]; }
	else if (!oData.appBG) { oData.appBG = ""; }
	if (!oData.appFmt) { oData.appFmt = 1; }
	if (!oData.nTeaseH) { oData.nTeaseH = (window.mugHeight) ? mugHeight : 110; }
	if (!oData.nTeaseW) { oData.nTeaseW = (window.mugWidth) ? mugWidth : 90; }

	if (!oData.appNav) { oData.appNav = (window.appNav) ? appNav : ""; }
	if (oData.appNavStyle==null) { oData.appNavStyle = (window.appNavStyle || window.appNavStyle==0) ? window.appNavStyle : (oData.appNav) ? 0 : (oData.rows) ? 6 : 1; }

	if (!oData.SelectList) { oData.SelectList = ""; }

	if (!oData.appFooter) { oData.appFooter = ""; }
	else if (typeof oData.appFooter == "string" && oData.appFooter.indexOf("|") > -1) { oData.appFooter = oData.appFooter.split("|"); }

	if (!oData.navCols) { oData.navCols = (oData.nLinkCols) ? oData.nLinkCols : (window.nLinkCols) ? nLinkCols : (oData.rows) ? 2 : 1; }

	if (oData.bPrintable == null) { oData.bPrintable = 1; }

	if (!oData.sNavLinkStyle) { oData.sNavLinkStyle = ""; }
	if (oData.sNavLinkStyle.indexOf("background-color") == -1) { oData.sNavLinkStyle += "background-color:#EEEEEE;"; }
	if (oData.sNavLinkStyle.indexOf("border:") == -1) { oData.sNavLinkStyle += "border:1px #CCCCCC solid;"; }
	oData.sNavLinkStyle = " color:000000;font-size: 10px;font-family:verdana;line-height: 130%;text-decoration:none;" + oData.sNavLinkStyle;

	if (!oData.sNavLinkActive) { oData.sNavLinkActive = ""; }
	if (oData.sNavLinkActive.indexOf("background-color") == -1) { oData.sNavLinkActive += "background-color:#FFFFFF;"; }

	if (!oData.sNavLinkHover) { oData.sNavLinkHover = ""; }
	oData.sNavLinkHover = "color:cc3333;"+oData.sNavLinkHover;
	if (oData.sNavLinkHover.indexOf("background-color") == -1) { oData.sNavLinkHover += "background-color:#FFFFEE;"; }

	// detect cell states and remove from link styles
	oData.navCellColor = new Array();

	var bg0 = getSingleStyle(oData.sNavLinkStyle,"background-color");
	oData.navCellColor[0] = (bg0) ? bg0.substring(bg0.indexOf(":")+1).replace(";","") : "";
	oData.sNavLinkStyle = oData.sNavLinkStyle.replace(bg0,"");

	var bg2 = getSingleStyle(oData.sNavLinkActive,"background-color");
	oData.navCellColor[2] = (bg2) ? bg2.substring(bg2.indexOf(":")+1).replace(";","") : "";
	oData.sNavLinkActive = oData.sNavLinkActive.replace(bg2,"");

	var bg1 = getSingleStyle(oData.sNavLinkHover,"background-color");
	oData.navCellColor[1] = (bg1) ? bg1.substring(bg2.indexOf(":")+1).replace(";","") : "";
	oData.sNavLinkHover = oData.sNavLinkHover.replace(bg1,"");

	oData.navCellStyle = (oData.appNavStyle == 3) ? "width:100%;" : "width:20px;text-align:center;";
	if (oData.navCellColor[0]) { oData.navCellStyle += "background-color:"+oData.navCellColor[0] +";"; }
	
	var navBrdr = getSingleStyle(oData.sNavLinkStyle,"border");
	if (navBrdr) { oData.navCellStyle += navBrdr.replace("border:","border-left:")+navBrdr.replace("border:","border-top:"); }
	oData.sNavLinkStyle = oData.sNavLinkStyle.replace(navBrdr,"");

	if (oData.sBulletStyle == null) { oData.sBulletStyle = "color:CC0000;font-family:verdana;font-size:11px;font-weight:bold;" +getSingleStyle(oData.sNavLinkHover,"color") }
	else { oData.sBulletStyle = "color:CC0000;font-family:verdana;font-size:11px;" + oData.sBulletStyle; }

	oData.copyMargin = (parentData) ? 0 : (oData.copyMargin == null) ? 9 : oData.copyMargin;

	if (oData.aRowsPerPage) { oData.itemsPerPage=oData.aRowsPerPage;}
	else if (!oData.itemsPerPage && !window.bWB3) {
		if (oData.rows) { oData.itemsPerPage=oData.rows.length;}
		else { oData.itemsPerPage=1;}
	}

	oData.sEvents = "";
	if (!oData.nInterval) { oData.nInterval=2500; }
	else { oData.nInterval = oData.nInterval * 100; }

	if (!oData.sHedStyle) { oData.sHedStyle=""; }
	oData.sHedStyle = "font-size: 19px; font-family:arial; font-weight:bold;" + oData.sHedStyle;

	if (!oData.sDeckStyle) { oData.sDeckStyle = ""; }
	oData.sDeckStyle = "color:#666;font-weight:bold; font-family:verdana; font-size:11px;padding:5px " +oData.copyMargin+ "px;" + oData.sDeckStyle;

	if (!oData.sSubHedStyle) { oData.sSubHedStyle=""; }
	oData.sSubHedStyle = "font-weight:bold;text-decoration:none;text-transform:uppercase;padding:3px 3px;" + oData.sSubHedStyle;

	if (parentData) { oData.sBodyFont = parentData.sBodyFont; }
	else if (!oData.sBodyFont) { oData.sBodyFont = ""; }
	oData.sBodyFont = "font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 70%; line-height: 140%;" + oData.sBodyFont;

	if (parentData) { oData.headlineStyle = parentData.headlineStyle; }
	else if (!oData.headlineStyle) { oData.headlineStyle = ""; }
	oData.headlineStyle = "font-weight:bold;" + oData.headlineStyle;
	if (!oData.rows && oData.appLayout != 7 && oData.itemsPerPage == 1) { oData.headlineStyle = "color:#cc0000;" + oData.headlineStyle; }

	if (parentData) { oData.headlineHvr = parentData.headlineHvr; }
	else if (!oData.headlineHvr) { oData.headlineHvr = ""; }

	if (!oData.sColHedStyle) { oData.sColHedStyle = ""; }
	oData.sColHedStyle = "color:ffffff; font-size:10px;font-weight:bold;background-color:999999;" + oData.sColHedStyle;

	if (!oData.buttons) { oData.buttons = "http://msnbcmedia.msn.com/i/msnbc/Components/Art/SITEWIDE/buttons/"; }

	oData.appStyle = "";
	if (!oData.sAlign) { oData.sAlign = "none"; }
	if (oData.sAlign != "none") {
		var sAppPad = (oData.sAlign=="right") ? "left" : "right";  
		oData.appStyle += " float:" +oData.sAlign+ ";margin-top:5;margin-bottom:5;margin-" +sAppPad+ ":5;";
	}

	if (oData.rowSpacer == null) { oData.rowSpacer = 0; }

	if (oData.nCellpad == null) { oData.nCellpad=3;}
	if (oData.cellspacing == null) { oData.cellspacing=1;}
	if (oData.cellBorder == null && oData.rows) { oData.cellBorder=""; }

	if (!oData.rowAlt && oData.appFmt != 4) { oData.rowAlt = "#EEEEEE";}
	else if (oData.rowAlt == "transparent") { oData.rowAlt = ""; }

}

function getNavArrows(oData) {
	nPages = (oData.totalPages) ? oData.totalPages : oData.length; 
	var sArrowL = "arrows_" +oData.ID+"_img0";
	var sArrowR = "arrows_" +oData.ID+"_img1";
	var activeColor = oData.sNavLinkActive.replace(":","=");
	if (oData.appLayout == 7) { oData.appNavStyle = 7; }

	var aTmp = new Array();
	aTmp.ID = oData.ID+"2";

	var aTmp2 = new Array();
	aTmp2.ID = oData.ID+"3";
	var sTextLinks = "";
	for (var j=0;j<nPages;j++) {
		var sSep = (j > 0) ? " | " : " ";
		var sPageLink = (oData.appNavStyle == 6) ? "<img src=" +oData.buttons +(j+1)+".gif name=\"" +oData.ID+ "_img" +j+"\" onerror=navImgFailover(this); align=absmiddle border=0>" : (oData.SelectList) ? sSep + oData.SelectList[j] : (!oData.rows) ? sSep + oData[j][1] : "";

		sTextLinks += (oData.appNavStyle == 6 || oData.appNavStyle == 10) ? "<a href=\"javascript:Swapcopy('"+oData.ID+"'," +j+");\" class=navlink" +oData.ID+ " onmouseover=\"SwapImage('"+oData.ID+"_img" +j+"',1);\" onmouseout=\"SwapImage('"+oData.ID+"_img" +j+"',0);\">" +sPageLink+  "</a>" : "";

		aTmp[j] = new Array("","","");
		aTmp[j].body = "<font face='verdana,arial' size=1 color=#000000 style='width:42px;text-align:center;'><b>" +(j+1)+ "/"+nPages+"</b></font>";

		aTmp2[j] = new Array("","","");
		if (j < nPages-1) {
			var sNextHed = (oData.SelectList) ? oData.SelectList[j+1] : (!oData.rows) ? oData[j+1][1] : "";

			aTmp2[j].body = " <a href=\"javascript:Swapcopy('"+oData.ID+"'," +(j+1)+");\" class=navlink" +oData.ID+ "><b>Next:</B> "+sNextHed+ "</a>";
		} else { aTmp2[j].body = " "; }

	}
	sBtwnArrows = (oData.appNavStyle == 6 || oData.appNavStyle == 10) ? "" : writeLayers(aTmp);

	if (oData.appNavStyle == 2) { sTextLinks = writeLayers(aTmp2); }

	var leftArrow = "prev_arrow";	var rightArrow = "next_arrow";	var arrowSpace = "";
	if (oData.appLayout == 7) {
		leftArrow = "arrow_left"; rightArrow = "arrow_right"; arrowSpace = " vspace=4";
	}

	var imgPrev = "<a href=\"javascript:Swapcopy('"+ oData.ID+"',"+ oData.ID+".nCurPage-1);\" onmouseover=\"SwapImage('"+sArrowL+"',1);\" onmouseout=\"SwapImage('"+sArrowL+"',0);\"><img src=" +oData.buttons + leftArrow + ".gif name=" +sArrowL+ " border=0 align=absmiddle " + arrowSpace + "></a>";
	var imgNext = "<a href=\"javascript:Swapcopy('"+ oData.ID+"',"+ oData.ID+".nCurPage+1);\" onmouseover=\"SwapImage('"+sArrowR+"',1);\" onmouseout=\"SwapImage('"+sArrowR+"',0);\"><img src=" +oData.buttons + rightArrow + ".gif name=" +sArrowR+ " border=0 align=absmiddle " + arrowSpace + "></a>";

	var imgStyle = (document.layers) ? "" : "style=display:none";
	sTmp = imgPrev+sBtwnArrows+ imgNext + sTextLinks + "<img src=http://www.msnbc.msn.com/images/cleardot.gif name=arrows_"+oData.ID+"_img99 " +imgStyle+ " height=1 width=1>";

	return sTmp;
}


function getNavLinks(dataname,nStart,nEnd) {
	var oData = eval(dataname);
	var nNavCols = oData.navCols;
	if (!nStart) { nStart = 0; }
	if (!nEnd) { nEnd = (oData.rows) ? oData.rows.length : oData.length; }
	var j = 0;
	var nCntr = 0;
	var selState = (oData.appNavStyle == 9) ? 3 : 2;
	var nNavWidth = (oData.appFmt==2 && (oData.appLayout == 3 || oData.appLayout == 4)) ? (oData.appWidth-oData.copyWidth)+"px" : "100%";

	var sNav = "<TABLE cellpadding=0 cellspacing=0 border=0 style=\"width:" +nNavWidth+ ";\"><tr valign=top><td>";

	// styles specific to in-story nav subheds
	var subhedStyle = " class=subhed"+oData.ID+" style='width:100%;border-right:1px #CCCCCC solid;'";

	if (!getSingleStyle(oData.sSubHedStyle,"font-size")) { subhedStyle = subhedStyle.replace("style='","style='font-size:65%;"); }
	if (!getSingleStyle(oData.sSubHedStyle,"background-color")) { subhedStyle = subhedStyle.replace("solid;","solid;background-color:#DDDDDD;"); }

	for (var i=nStart;i<nEnd;i++) {
		var sHed = (oData.SelectList) ? oData.SelectList[i] : (oData.rows) ? oData.rows[i][1] : oData[i][1];
		if (sHed) {
			var bImg = 0;
			nCntr++;
			var sHref = "Swapcopy('" +oData.ID+ "',"+i+");";
			if (nNavCols == "sub" && oData[i][6] == "sub") {
				sNav += "</td><td>";
			}

			if (sHed.indexOf("<img") > -1) {
				if (!oData.rows && !oData[i].body) { sNav += sHed; }
				else {
					sHed = sHed.substring(0,sHed.lastIndexOf(">"));
					sHed += " name=\"" +oData.ID+ "_img" +i+"\" onerror=navImgFailover(this); border=0>";

					var sImgEvents = " onmouseover=\"SwapImage('"+oData.ID+"_img" +i+"',1);\" onmouseout=\"SwapImage('"+oData.ID+"_img" +i+"',0);\"";

					sNav += "<a href=javascript:" +sHref+ "SwapImage('"+oData.ID+"_img" +i+"'," +selState+"); " +sImgEvents+ ">"+sHed+"</a>";
				}
				bImg = 1;
			} else if (!oData.rows && oData[i][6] == "sub") { 
			
				sNav += (oData[i].body) ? "<a href=javascript:" +sHref+ subhedStyle + ">"+sHed+"</a>" : "<span "+subhedStyle+">"+sHed+"</span>";
			} else { 
				sNav += "<table cellpadding=0 cellspacing=0 border=0 class=navCell" +oData.ID+ " id=navCell"+oData.ID+"_" +i+ " onmouseover=\"swapNavCell('" +oData.ID+ "'," +i+ ",1);\" onmouseout=\"swapNavCell('" +oData.ID+ "'," +i+ ",0);\" onclick=" +sHref+ "><tr valign=top><td width=12 align=center><font class=bullet"+oData.ID+">&#0149;</font></td><td align=left><a href=javascript:" +sHref+ " class=navlink"+oData.ID+" name=navlink_"+oData.ID+"_" +i+ ">"+sHed+"</a></td></tr></table>";
			}

			if (i < nEnd - 1) {
				if (nNavCols > 1) {
					sNav += "</td>";
					if (nCntr == nNavCols) { sNav += "</tr><tr valign=top>";nCntr=0; }
					sNav += "<td>";
				} else if (bImg) { sNav += "<br>";bImg=0; }
			}
		}
	}
	var imgStyle = (document.layers) ? "" : "style=display:none";
	sNav += "</td></tr><img src=http://www.msnbc.msn.com/images/cleardot.gif name="+oData.ID+"_img99 " +imgStyle+ " height=1 width=1></table>";
 	return sNav;
}

function setNavItem(oData,nPage) { // set nav item to 'selected'
	var sArrows = ",2,6,7,10,";
	var navStyle = oData.appNavStyle;
	if (sArrows.indexOf(","+navStyle+",") > -1) {
		swapArrowNav(oData,nPage); 
	} else if (navStyle == 1) {
		document.forms["nav_"+oData.ID].elements[0].selectedIndex=nPage;
	} else if (navStyle !=0 && navStyle != 8) { swapNavCell(oData.ID,nPage,2);SwapImage(oData.ID+"_img"+nPage,2); }
}

function swapArrowNav(oData,nNextPg) {
	var oTarget = (parent.navframe) ? "parent.navframe." : (eval("document.navframe"+oData.ID)) ? "document.navframe"+oData.ID+"." : "";

	if (nNextPg < oData.totalPages) {
		eval(oTarget + "SwapImage('" + oData.ID+"_img"+nNextPg+"',2);");
	}
	var sArrowL = "arrows_" +oData.ID+"_img0";
	var sArrowR = "arrows_" +oData.ID+"_img1";
	if (nNextPg == oData.totalPages-1) {
		eval(oTarget + "SwapImage('" + sArrowR +"',2);");
	} else if (nNextPg == 0) {
		eval(oTarget + "SwapImage('" + sArrowL +"',2);");
	} else {
		eval(oTarget + "SwapImage('arrows_" + oData.ID+"_img99',2);");
	}
}

function swapNavCell(dataname,nNextPg,nState) {
	var oData = eval(dataname);

	var oDoc = (parent.navframe) ? "parent.navframe." : (eval("document.navframe"+oData.ID)) ? "document.navframe"+oData.ID+"." : "";

	var navCellNext = (document.all) ? eval(oDoc+"document.all.navCell"+oData.ID+"_"+nNextPg) : eval(oDoc+"document.getElementById(\"navCell"+oData.ID+"_"+nNextPg+"\")");

	if (navCellNext && nState != 2 && nNextPg != oData.nCurPage) { navCellNext.style.backgroundColor = oData.navCellColor[nState]; }
	else if (nState == 2) {
		var navCellCur = (document.all) ? eval(oDoc+"document.all.navCell"+oData.ID+"_"+oData.nCurPage) : eval(oDoc+"document.getElementById(\"navCell"+oData.ID+"_"+oData.nCurPage+"\")");
		if (navCellCur) { navCellCur.style.backgroundColor = oData.navCellColor[0]; }
		if (navCellNext) { navCellNext.style.backgroundColor = oData.navCellColor[2]; }
	}
	return false;
}

function GetappNav(dataname,nStart,nEnd) {
	oData = eval(dataname);
	var sTmp = "";
	if (oData.appNavStyle==1) {  // dropdown
		sTmp += "<form name=nav_" +oData.ID+ " style=margin:0px;><select onChange=\"Swapcopy('" +dataname+ "',this.selectedIndex)\">";
		var nItems = (oData.rows) ? oData.rows.length : oData.length;
		for (i=0;i<nItems;i++) {
			var sHed = (oData.SelectList) ? oData.SelectList[i] : oData[i][1];
			if (sHed) { sTmp += "<option>" + sHed; }
		}
		sTmp += "</Select></form>";
	} else if (oData.appNavStyle==3 || oData.appNavStyle==4 || oData.appNavStyle==5  || oData.appNavStyle==9) { // text or image links
		sTmp += getNavLinks(dataname,nStart,nEnd);

	} else if (oData.appNavStyle ==  2 || oData.appNavStyle ==  6 || oData.appNavStyle ==  7 || oData.appNavStyle ==  10) { 
		sTmp += getNavArrows(oData); 
	} else if (oData.appNavStyle==8 && oData.totalPages > 1) { // auto-rotation
		oData.sEvents = " onmouseover=clearTimeout(nAppTimer); onmouseout=TimeSwap('" +dataname+ "',1); ";
		oData.nCurPage=0;sTmp="";
		setTimeout("TimeSwap('" +dataname+ "')",oData.nInterval);
	} else if (oData.appNav) { sTmp += oData.appNav; }
	return sTmp;
}


function Swapcopy(dataname,nNextPg){
	var oData = eval(dataname);
	if (oData.nCurPage == null) { oData.nCurPage = 0;nNextPg = 1;}
	else if (nNextPg == null) { nNextPg = 1; }
	if (nNextPg == oData.totalPages || nNextPg < 0) { nNextPg = 0; }
	var bIframe = (!oData.rows && oData[nNextPg].body.indexOf("href=") == 0);
	if (oData.totalPages > 1 && (nNextPg != oData.nCurPage || bIframe) && nNextPg > -1 ) {
	if (document.layers) {
		if (!oData.rows && bIframe) { 
			OCW(oData[nNextPg].body.substring(5),"","height="+oData.copyHeight+",width="+oData.copyWidth);
			nNextPg = oData.nCurPage;
		} else {
			var PopObj = eval("document.layers['poptext_" +dataname+ "']");

			PopObj.layers[oData.nCurPage].visibility="hidden";
			PopObj.layers[nNextPg].visibility="show";

			swapCopy2("poptext_" +dataname+"2",oData.nCurPage,nNextPg,"");
			swapCopy2("poptext_" +dataname+"3",oData.nCurPage,nNextPg,"");
		}
	}
	else if (oSniff.ie > 3) { 
		var PopObj = eval("document.all.poptext_" +dataname)
		var oTextFrame = eval("document.all.txtframe_" +oData.ID);
		var oTextFrame2 = eval("document.textframe_" +oData.ID);

		PopObj[oData.nCurPage].style.display = "none";
		if (nNextPg > -1 && !bIframe) { PopObj[nNextPg].style.display=""; }

		swapCopy2("poptext_" +dataname+"2",oData.nCurPage,nNextPg,"");
		swapCopy2("poptext_" +dataname+"3",oData.nCurPage,nNextPg,"");

		if (oData.appFmt==2 && !oData.rows) {	
			if (bIframe) {
				PopObj[nNextPg].style.display = "none";
				oTextFrame.style.display = "";
				oTextFrame2.location.replace(oData[nNextPg].body.substring(5));
			} else if (oTextFrame) {
				oTextFrame.style.display = "none";
			}
		}
	}
	else if (oSniff.nn >= 5) { 
		var PopObj = eval("document.getElementById(\"poptext_" +dataname+"\").childNodes");

		var oTextFrame = eval("document.getElementById(\"txtframe_" +dataname+"\")");

		PopObj.item(oData.nCurPage).style.display="none";
		if (nNextPg > -1 && !bIframe) { PopObj.item(nNextPg).style.display=""; }
		swapCopy2("poptext_" +dataname+"2",oData.nCurPage,nNextPg,"");
		swapCopy2("poptext_" +dataname+"3",oData.nCurPage,nNextPg,"");
		if (oData.appFmt==2) {
			if (!oData.rows && bIframe) {
				PopObj.item(nNextPg).style.display="none";
				oTextFrame.style.display = "";
				oTextFrame.src = oData[nNextPg].body.substring(5);
			} else if (oTextFrame) {
				oTextFrame.style.display = "none";			
			}
		}
	}
		if (oData.instrument) { eval("document.images.instr_" + oData.ID+ ".src='" +oData.instrument+ "?http://www.msnbc.msn.com/images/cleardot.gif&&cm=" +oData.ID+ "&ce=" +nNextPg+ "&hl=" +escape(oData[nNextPg][1])+ "'"); }
	}

	setNavItem(oData,nNextPg);
	oData.nCurPage = nNextPg; 
}

function swapCopy2(layerName,nCurPg,nNextPg,sWindow) { // generic paging for app layers
	if (document.layers) {
		var oLyr = eval(sWindow+"document.layers['" +layerName+ "']");
		if (oLyr) {
			oLyr.layers[nCurPg].visibility="hidden"; 
			oLyr.layers[nNextPg].visibility="show"; 
		}
	} else {
		var oLyr = (document.getElementById) ? eval(sWindow+"document.getElementsByName('" +layerName+"')") : eval(sWindow+"document.all." +layerName);
		if (oLyr.length) { 
			oLyr[nCurPg].style.display="none";
			oLyr[nNextPg].style.display=""; 
		}
	}
}

var nAppTimer=0;
function TimeSwap(dataname,nEvent) {
	clearTimeout(nAppTimer);
	aData = eval(dataname);
	if (!nEvent) {
		var nNextPage = aData.nCurPage+1;
		if (nNextPage == aData.length) { nNextPage = 0; }
		Swapcopy(dataname,nNextPage);
	}
	nAppTimer = setTimeout("TimeSwap('" +dataname+ "');", aData.nInterval);
}

function OPW(dataname,sFunction) {
	printWin = window.open("about:blank","PrintWin","width=520,height=440,scrollbars=yes,resizable,menubar");
	setTimeout(sFunction+"(" +dataname+ ",'printWin');",1000);
}

function nxtPgBtn(oData) {
	var nSel = (oData.appNavStyle==9) ? 3 : 2;
	var x = "SwapImage(oData.ID+'_img'+oData.nCurPage," +nSel+ ");"
	if (oData.appNavStyle==1) { x = "swapDD('nav_" +oData.ID+"',oData.nCurPage);" }
	return "<a href=\"javascript:Swapcopy('"+ oData.ID+"', oData.nCurPage+1);" +x+ "\"; onmouseover=SwapImage('next" +oData.ID+ "',1); onmouseout=SwapImage('next" +oData.ID+ "',0);>" +oData.sNextImg.replace(">"," align=right name=next" +oData.ID+ " border=0>")+ "</a>";
}

function BigRedLink(oData) {
	var sHed = (oData.sTitle) ? oData.sTitle : oData.appHeader;
	var sPath = (oData.rows) ? "/d/tables/" : "/d/ip/";
	return "<table cellspacing=0 cellpadding=0 border=0><tr><td><div class=box_brl style=width:460;><table width=460 cellspacing=0 cellpadding=0 class=boxH_brl><tr><td width=* nowrap=1 class=boxHC_brl><div class=textSmallBold>  Interactive</div></td></tr></table><table width=460 cellspacing=0 cellpadding=0 class=boxB_brl><tr valign=top><td class=boxBI_brl><div class=bigRedLink><p><a href=\"http://www.msnbc.com/modules/interactive.asp?id=" +sPath + oData.ID+ "/data.js&fmt=full\">" +sHed+ "</a></p></div></td></tr></table></div></td></tr></table>";
}

function getAppStyles(oData) {
	var sID = (oData.ID) ? oData.ID : oData.sName;
	var sTmp = "<STYLE type=text/css>";
	sTmp += " .app" +sID+ " { " +oData.appStyle+ " }";
	sTmp += " .label" +sID+ " { " +oData.labelStyle+ " }";
	sTmp += " .hed" +sID+ " { " +oData.sHedStyle+ " }";
	sTmp += " .deck" +sID+ " { "  +oData.sDeckStyle+ " }";
	sTmp += " .subhed" +sID+ " { "  +oData.sSubHedStyle+ " }";
	sTmp += " .colhdr" +sID+ " { "  +oData.sColHedStyle+ " }";
	sTmp += " .font1" +sID+ " { "  +oData.sBodyFont+ " }";
	sTmp += " .boxB_" +sID+ " { " + oData.sBodyFont + ";" +oData.copyBorder+ "  ;width:100%; }";
	sTmp += " .headline" +sID+ " { " +oData.headlineStyle+ " }";
	sTmp += " .headline" +sID+ ":hover { " + oData.headlineHvr+ "}";
	sTmp += " .headline" +sID+ ":visited { " + oData.headlineStyle+ "}";
	sTmp += " .caption" +sID+ " { " + oData.sCaptionStyle+ "}";
	sTmp += " #NoBg { background-color:transparent; }";
	sTmp += " .navlink" +sID+ " { " +oData.sNavLinkStyle+ " }";
	sTmp += " .navlink" +sID+ ":hover { " +oData.sNavLinkHover+ " }";
	sTmp += " .navlink" +sID+ ":active { " +oData.sNavLinkActive+ " }";
	sTmp += " .navCell" +oData.ID+ " { " + oData.navCellStyle + "padding:2px;cursor:hand;width:100%;" + " }";
	sTmp += " .bullet" +sID+ " { " +oData.sBulletStyle+ " }";
	sTmp += "</STYLE>";
	return sTmp;
}

function HTML2CSS(sTmp) {
	sTmp = sTmp.toLowerCase();
	if (sTmp.indexOf("face=") > -1) {
		sTmp = sTmp.replace("font","");
		sTmp = sTmp.replace("face=","font-family:");
		sTmp = sTmp.replace("size=2",";font-size:12px;");
		sTmp = sTmp.replace("size=1",";font-size:10px;");
	} 
	sTmp = sTmp.replace("bgcolor=","background-color:") + ";";
	return sTmp;
}

function cnvrtAppData(oData) {
	if (oData.appLayout == 5 || oData.appLayout == 6) {
		// get image-swap array
		var aTeases = eval(oData.ID+"2");
	}

	var permaLink = "/modules/interactive.asp";
	var idTag = "id";
	var wbDomain = "www.msnbc.msn.com";
	if (legacyServers.indexOf(document.domain) == -1) {
		permaLink = "/id/4091102/";
		idTag = "pid";
		wbDomain = document.domain;
	}
	if (!oData.rows) {
	var sBGTextFrame = (!oData.appBG) ? "" : (typeof oData.appBG == "object") ? "&"+oData.appBG[1] : "&"+oData.appBG;		


	for (var i=0;i<oData.length;i++) {
		if (typeof oData[i] == "string") { // old data format
			var tmpHed = (oData.SelectList) ? oData.SelectList[i] : "";
			var tmpBody = (oData[i]) ? oData[i] : "";
			var tmpImg = (aTeases && typeof aTeases == "object") ? aTeases[i] : (aTeases && i==0) ? aTeases : "";
			oData[i] = new Array("",tmpHed,"",tmpImg);
			oData[i].body = tmpBody
			if (oData[i][1].indexOf("subhed") > -1) {
				oData[i][6] = "sub";
			}
		}

		if (oData[i][0] && oData.itemsPerPage == 1 && oData.appLayout != 7 && !oData[i].body) { // link to external page

			var sHref = oData[i][0];
			if (oData[i][6] == "v") { 
				sHref = permaLink + "?" +idTag+ "="+oData[i][0] + "&type=v&parentID=" +oData.ID + "&fmt=frame"; 
			} else if (sHref.indexOf(".svj") > -1 || sHref.indexOf(".ips") > -1 || sHref.indexOf(".ipx") > -1) { 
				sHref = permaLink + "?" +idTag+ "="+oData[i][0] + "&type=sur&parentID=" +oData.ID + "&fmt=frame"; 
			}
			else if (oData[i][6].indexOf("lv") > -1) { 
				var cols = (oData[i][6] == "lv") ? "" : "&cols=2";
				sHref = permaLink + "?type=lv&" +idTag+ "=" +oData[i][0]+ "&parentID=" +oData.ID+ "&brand=0"+cols+ "&fmt=frame"; 
			} else if (parseInt(oData[i][0])) { sHref = "http://" +wbDomain+"/id/" +oData[i][0]+ "/"; }
			oData[i].body = "href="+sHref; 
		} else {
			if (!oData[i][5]  && oData[i][1]) { oData[i][5] = oData[i][1]; }

			if (oData.appLayout < 5 && oData[i][3]) { 
				// add image to body for non-tease galleries
				oData[i].body = addImg2Body(oData,i);
			} else if (oData[i][3]) { 
				// get image / url for video galleries

				var sHref = getHref(oData[i]);
				oData[i][3] = getTeaseCode(oData,i);
				if (sHref) { oData[i][3] = "<a href="+sHref+">" +oData[i][3]+ "</a>"; }
				if (oData.appLayout == 7 && oData[i][12]) { 
					oData[i][2] += "<br><div class=credit style=font-size:90%;padding-top:5px;>" + oData[i][12] + "</div>"; 
				}
			}
			oData[i].body = (oData[i].body) ? oData[i].body : oData[i][2];
		}
	}
	}
}


function addImg2Body(oData,nItem) {
	// add image to body copy
	var oItem = oData[nItem];
	var sTmp = "";	var textFloat="none";
	if (oItem[10]) {
		if (oItem[10].indexOf("-NW")  > -1) {
			oItem[10] = oItem[10].replace("-NW","");
			textFloat = oItem[10];
		}
	}
	var imgSrc = getTeaseCode(oData,nItem);

	if (oItem[10] == "bg") {
		sTmp = imgSrc;
	} else if (oItem[10] == "nav") {
		oItem[1] += imgSrc;
		if (!oData.itemsPerPage) { oData.itemsPerPage = oData.length;}
		sTmp = oItem.body;
	} else if (!oItem.body) { // tease layout
		sTmp += imgSrc + "<span style=float:" +textFloat+ ";><headline/><br>" + oItem[2]+"</span>";
	} else {
		sTmp += imgSrc + "<span style=float:" +textFloat+ ";>" + oItem.body+"</span>";
	}
	return sTmp;
}


function getSingleStyle(sSrc,retStyle) {
	var sTmp = "";
	if (sSrc) {
		var aStyles = sSrc.split(";");
		var re = /\s/g;
		for (var i=0;i<aStyles.length;i++) {
			var styleTmp = aStyles[i].replace(re,""); // remove leading spaces
			if (styleTmp.indexOf(retStyle+":") == 0) {
				sTmp = aStyles[i] +";";
			}
		}
	}
	return sTmp;
}


function cnvrtList2Url(oData) {
	var sTmp = "&nitems="+oData.length+"&dataID="+oData.ID+"&";
	if (oData.altPath) { sTmp += "altpath="+oData.altPath+"&"; }
	if (oData.appWidth) { sTmp += "w="+oData.appWidth+"&"; }
	if (oData.appHeight) { sTmp += "h="+oData.appHeight+"&"; }
	// 0=url, 1=hed, 6 = type
	for (i=0;i<oData.length;i++) {
		sHed = escape(oData[i][1]);
		sCap = escape(oData[i][2]);
		sTmp += "url_" +i+ "="+oData[i][0]+"&hed_" +i+ "="+sHed+"&caption_" +i+ "="+sCap+"&img_" +i+ "="+oData[i][3]+"&itemtype_" +i+ "="+oData[i][6]+"&";
	}
	return sTmp;
}

function displayApp(oData) {
	if (oData.template && oData.template.indexOf(".swf") > 0) {
		document.write(writeFlashApp(oData));
	} else if (oData.appFmt == 0) {
		Poptext1(oData);
	} else if (oData.appFmt == 1) {
		PoptextGray(oData);
	} else if (oData.appFmt == 4) {	// TICKER
		oData.itemsPerPage = "";
		oData.nInterval = (oData.nInterval) ? oData.nInterval/10 : .2;
		if (!oData.copyHeight) { oData.copyHeight = 22; }
		if (oData.appLayout == 7) {
			oData.appLayout = 1;
			for (var i=0;i<oData.length;i++) {
				if (!oData[i][10]) { oData[i][10] = "left"; }
			}
			oData.aColWidths=1;
		}
		if (typeof oData.aColWidths == "object") { oData.aColWidths = oData.aColWidths.length; } 
		Poptext2(oData);
	} else if (oData.appFmt == 5 && oData.appWidth >= 200) {
		oData.copyMargin=0;oData.copyBorder="border:0px;";
		oData.appFmt=2;
		Poptext2(oData); 
	} else if (oData.appFmt == 8) {
		PoptextCW(oData);
	} else if (oData.appFmt == 9) {
		PoptextIframe(oData);
	} else {
		Poptext2(oData);
	}
}

function writeFlashApp(oData) {
	var oTmp=new flashObj2();
	oTmp.ID = oData.ID;
	oTmp.flashFile = (oData.template.toLowerCase().indexOf("dataID=") > -1) ? oData.template : oData.template+"?"+cnvrtList2Url(oData);

	// need to decide on this
	oTmp.altImg = (oData.altPath) ? oData.altPath + oData[0][3] : "/d/ip/" +oData.ID+ "/" + oData[0][3];
	oTmp.url = getHref(oData[0]);

	oTmp.defaultType = 1;
	oTmp.width = oData.appWidth;
	oTmp.height = oData.appHeight;
	oTmp.bgcolor = (oData.appBG) ? oData.appBG : "";
	oTmp.flashVer = 7;
        oTmp.cabVersion = "7,0,0,0";
	// use default values for all other object settings
	return writeFlashComponent2(oTmp);
}


function launchLink(oData) {
	var sHref = getHref(oData[oData.nCurPage]);
	sHref = sHref.substring(0,sHref.indexOf("target="));
	eval(sHref);
}

function showPrintLink(oData) {
	var oPrnt = (document.all) ? eval("prnt_"+oData.ID) : (oSniff.nn >= 5) ? document.getElementById("prnt_"+oData.ID) : "";
	if (!oData.itemsPerPage) { 
		if (document.all) {
			var oBlock = eval("Block_"+oData.ID);
			var copyBottom = parseInt(oBlock.clientHeight);
		} else if (oSniff.nn >= 5) {
			var oBlock = document.getElementById("Block_"+oData.ID)
			var copyBottom = parseInt(oBlock.offsetHeight);
		}
		if (oPrnt && oData.copyHeight && copyBottom > oData.copyHeight) { oPrnt.style.display = '';oBlock.align = "right"; } 
	} else if (oPrnt && oData.totalPages > 1) { oPrnt.style.display = ''; }
}


function getAppCopyPaging(oData) {
	addUrl2Column(oData); 
	var curPage = 0;
	var nPages =  0;
	var str = "";
	var nRwCntr = 1;
	var nColCntr = 1;
	var sTableID="";
	var sTableStyle = "";
	var direction = oData.Dir;
	var nItems = (oData.rows) ? oData.rows.length : oData.length;

	var bMultiColHdrs = (oData.aColWidths && oData.aColHeaderText && typeof oData.aColHeaderText[0] != "string") ? true : false;

	var cols = 1;
	var sColHeaders = "";
	if (oData.aColWidths) {
		if (typeof oData.aColWidths == "object") {
			cols = oData.aColWidths.length;
		} else {
			cols = oData.aColWidths;
			var colWidth = oData.copyWidth/cols;
		}
		sColHeaders = ColHeaders(oData.ID,cols,0);
		if (!oData.aColAlign) {
			oData.aColAlign = new Array();
			for (var i=0;i<cols;i++) { oData.aColAlign[i] = "left"; }
		}
	}
	var sSpacerRow = sGetSpaceRow(oData.rowSpacer,cols);

	if (!oData.itemsPerPage) { oData.itemsPerPage = nItems; }
	else if (typeof oData.itemsPerPage == "string" && oData.itemsPerPage.indexOf(",") > -1) {
		oData.itemsPerPage = oData.itemsPerPage.split(",");
		nPages = oData.itemsPerPage.length;
	} else {
		nPages = Math.ceil((nItems)/oData.itemsPerPage);
	}
	oData.totalPages = nPages;

	var navBG = (typeof oData.appBG == "object") ? oData.appBG[0] : "";

	if (document.layers && !fulltable) { 
		str += "<ILAYER name=poptext_" +oData.ID+ "><LAYER visibility=show><HTML><BODY>"; 
	} else if (oSniff.nn >= 5 && !fulltable) { 
		str += "<DIV style=display:show;>"; 
	} else { sTableID = "ID=poptext_" +oData.ID; }

	// special handling for pages w/ background images
	var sMargin = (!oData.rows && oData[0][10] == "bg") ? 0 : oData.copyMargin;
	var tablePad = (!oData.rows && oData[0][10] == "bg") ? 0 : oData.nCellpad;
	var cellSpacing = (!oData.rows && oData[0][10] == "bg") ? 0 : oData.cellspacing;
	var marginRow = (!oData.rows && oData[0][10] == "bg") ? "''" : "\"<tr><td height=\" +(sMargin-2*tablePad)+\">" +sSpacer+ "</td></tr>\""

	var tableWidth = "100-2*(100*(sMargin/"+oData.copyWidth+"))";

	var tableStart = "\"<table " +sTableID+ " cellpadding=0 border=0 cellspacing=\"+eval(cellSpacing)+ \" style='padding:\"+eval(tablePad)+ \"px;" + oData.sBodyFont+ ";font-size:100%;width:\"+eval(tableWidth)+\"%;\"+sTableStyle+ \"'>\" +eval(marginRow)";

	str += eval(tableStart);

	if (oData.aPageDecks) {
		str += "<tr><td colspan=" +cols+" valign=top class=deck" +oData.ID+ ">" +oData.aPageDecks[curPage]+ "</td></tr>";
	}
	str += sColHeaders;

	var subStyle = (!getSingleStyle(oData.sSubHedStyle,"color")) ? "style=color:#CC0000;" : ""; 

	for (var i=0;i<nItems;i++) {
		var ix = (direction==-1) ? nItems - i + direction : i
		// this needs to happen before nav is collapsed.
		if (cols==1 || typeof oData.aColWidths == "string") {
			var sBody = addHead2Body(oData,ix);
		}

		if (i>0 &&  ((i % oData.itemsPerPage==0) || (oData.itemsPerPage.length && ((nRwCntr-1)==oData.itemsPerPage[curPage])))) {
			curPage++;nRwCntr=1;nColCntr=1;
			if (!oData.rows && oData.appNavStyle == 3) { // COLLAPSE nav to match # of pages
				oData[curPage][1] = oData[ix][1];
				oData[curPage][6] = oData[ix][6];
				oData[curPage].body = oData[ix].body;
				if (i != curPage) { oData[ix][1] = ""; }
			}

			if (oData.aColWidths) {	sColHeaders = ColHeaders(oData.ID,cols,curPage); }

			if ((fulltable && bMultiColHdrs)||(fulltable && oData.aPageDecks)) {
				str += sColHeaders;
				if (oData.aPageDecks) {
					str += "<tr><td colspan=" +cols+" valign=top class=deck" +oData.ID+ ">" +oData.aPageDecks[curPage]+ "</td></tr>";
				}
			} else if (!fulltable) {
				str+= eval(marginRow)+"</TABLE>";
				if (document.layers) {
					str+="</BODY></HTML></LAYER><LAYER visibility=hidden><HTML><BODY>"; 
					sTableStyle = "";
				} else if (oSniff.nn >= 5) {
					str+="</DIV><DIV STYLE=DISPLAY:NONE>";
					sTableStyle = "";
				} else if (document.all) {
				 	sTableStyle = "DISPLAY:NONE;";
				}

				sMargin = (!oData.rows && oData[ix][10] == "bg") ? 0 : oData.copyMargin;
				tablePad = (!oData.rows && oData[ix][10] == "bg") ? 0 : oData.nCellpad;
				cellSpacing = (!oData.rows && oData[ix][10] == "bg") ? 0 : oData.cellspacing;
				marginRow = (!oData.rows && oData[ix][10] == "bg") ? "''" : "\"<tr><td height=\" +(sMargin-2*tablePad)+\">" +sSpacer+ "</td></tr>\""

				str += eval(tableStart)

				if (oData.aPageDecks) { 
					str += "<tr><td colspan=" +cols+" valign=top class=deck" +oData.ID+ ">" +oData.aPageDecks[curPage]+ "</td></tr>";
				}
				str += sColHeaders;

			}
		} else if (i>0 && !oData.rows && oData[ix][6] != "sub") {
			// remove headers not needed for nav.
			oData[ix][1] = "";
		}

		var bg = (nRwCntr % 2 != 0 || oData.itemsPerPage==1) ? "" : (oData.rowAlt) ? " bgcolor=" +oData.rowAlt : "";

		if (oData.aColWidths && typeof oData.aColWidths == "object") { // Tabular

			if (oData.rows) { oItem = oData.rows[ix]; }
			else if (oData[ix][6] == "sub") { oItem = oData[ix][1];
			}
			else { 
				oItem = new Array(oData[ix][1],oData[ix].body);
			}
			str += "<tr valign=top>";
			if (typeof oItem == "string") {
				str += "<td colspan=" +cols+ " align=" +oData.aColAlign[0]+ " class=subhed" +oData.ID+ " " +subStyle+ ">" + oItem + "</td>";
			}
			else if (!oItem) { }
			else {
				for (j=0;j<cols;j++) {
					var sAlign = (oData.aColAlign) ? oData.aColAlign[j] : "left";
					
					var rowText = (j==0) ? "<font class=headline" +oData.ID+">"+oItem[j]+"</font>" : oItem[j];

					var spacer = (sAlign=="right") ? "&nbsp;&nbsp;" : ""
					str += "<td width=" +oData.aColWidths[j]+ " " +bg+ " align=" +sAlign+ ">" + rowText+spacer+  "</td>";
				}
			}

			str += "</tr>";
		} else if (cols > 1 && sBody) { // Multi-columns
			if (nColCntr == 1) { str += "<tr valign=top>"; }
			str += "<td width=" +colWidth+ ">" + sBody+ "</TD>";
			if (nColCntr == cols) { str += "</tr>";	nColCntr = 1; }
			else { nColCntr++; }
		} else { 		
			str += "<tr " +bg+ " valign=top><td>" + sBody+ "</TD></tr>";
		}
		
		nRwCntr++;
		if ((nRwCntr <= oData.itemsPerPage || nRwCntr <= oData.itemsPerPage[curPage]) && i < nItems-1) { str += sSpacerRow; }

	}
	str += eval(marginRow) + "</table>";

	if (document.layers && !fulltable) {	str += "</BODY></HTML></LAYER></ILAYER>" }
	else if (oSniff.nn >= 5 && !fulltable) { str += "</DIV>" }
	return str
}

function ColHeaders(dataname,cols,nPage) {
	var oData = eval(dataname);var bHdr=0;var sColHeaders="";
	if (oData.aColHeaderText) {
		sColHeaders = "<TR valign=middle>";
		for (var i=0;i<cols;i++) {
			sAlign="";
			if (!oData.aColHeaderAlign) { sAlign="left"; }
			else if (typeof oData.aColHeaderAlign[0] != "string") {
				sAlign = oData.aColHeaderAlign[nPage][i];
			} else { sAlign = oData.aColHeaderAlign[i]; }

			sHedText = (!oData.aColHeaderText[0]) ? "" : (typeof oData.aColHeaderText[0] != "string") ?  oData.aColHeaderText[nPage][i] : oData.aColHeaderText[i]; 
			if (sHedText && sHedText != "id") { bHdr=1; }

			sColHeaders += "<td class=colhdr" +dataname+ " width=" +oData.aColWidths[i]+ " align=" +sAlign+ "><b>" +sHedText+ "</b></td>";
		}
		sColHeaders += "</TR>";
	} 
	if (!bHdr) { sColHeaders=""; }
	return sColHeaders;
}

function getAppCopyScrolling(oData) {
	addUrl2Column(oData);
	var cols = (oData.aColWidths && typeof oData.aColWidths == "object") ? oData.aColWidths.length : (oData.aColWidths) ? oData.aColWidths : 1;

	var nItems = (oData.rows) ? oData.rows.length : oData.length;
	var sSpacerRow = sGetSpaceRow(oData.rowSpacer,cols);

	var str = ""; var heightStyle = ""; var topPad = "padding-top:" +oData.copyMargin+ "px;";
	var tableWidth = 100-2*(100*(oData.copyMargin/oData.copyWidth)) + "%";
	if (oData.copyHeight) {
		heightStyle = "height:" +oData.copyHeight+ ";overflow:auto;";
		tableWidth="98%";
	}

	var tableBrdr = (oData.cellBorder) ? " border=1px bordercolor=" + oData.cellBorder + " style=\"border-collapse:collapse;\"" : "";

	// COLUMN HEADERS
	if (oData.aColHeaderText) { 
		var bHdrs=0;
		str += "<TABLE width=" +(oData.copyWidth-2*oData.copyMargin)+ " cellpadding=" +oData.nCellpad+ " cellspacing=" +oData.cellspacing+ " " +tableBrdr+ " class=colhdr" +oData.ID+ "><tr valign=middle>";
		for (i=0;i<cols;i++) {	// write col headers
			if (oData.aColHeaderText[i]  && oData.aColHeaderText[i] != "id") { bHdrs=1; }
			var colW = (cols == 1) ? oData.copyWidth-2*oData.copyMargin : (i < cols-1) ? oData.aColWidths[i] : "*";
			var sAlign = (oData.aColAlign) ? oData.aColAlign[i] : "left";
			str += "<td width=" +colW+ " align=" +sAlign+ ">" +oData.aColHeaderText[i]+ "</td>";
		}
		str += "</TR></TABLE>";
		if (!bHdrs) { str = ""; }
		topPad = "";
	}

	str += "<DIV style='" +heightStyle+ ";" +topPad+ ";width:" +oData.copyWidth+ "px;'><table width=" +tableWidth+ " " +tableBrdr+ " id=Block_" +oData.ID+ " cellpadding=" +oData.nCellpad+ " cellspacing=" +oData.cellspacing+ " style='" +oData.sBodyFont+ ";font-size:100%;'>";

	var subStyle = (!getSingleStyle(oData.sSubHedStyle,"color")) ? "style=color:#CC0000;" : ""; 

	for (i=0;i<nItems;i++) {
		var ix = (oData.Dir==-1) ? nItems - i -1 : i
		var bg = (i % 2 == 0 && oData.rowAlt) ? "bgcolor="+oData.rowAlt : "" ;
		str += "<tr " +bg+ " valign=top>";

		if (oData.aColWidths) { 
			if (oData.rows) { oItem = oData.rows[ix]; }
			else if (oData[ix][6] == "sub") { oItem = oData[ix][1];	} 
			else { oItem = new Array(oData[ix][1],oData[ix].body); }

			if (typeof oItem == "string") {
				str += "<td colspan=" +cols+ " align=left class=subhed" +oData.ID+ " " +subStyle+ ">" + oItem + "</td>";
			} else if (oItem) { 
				for (j=0;j<cols;j++) {
					var sAlign = (oData.aColAlign) ? oData.aColAlign[j] : "left";

					var rowText = (j==0) ? "<font class=headline" +oData.ID+">"+oItem[j]+"</font>" : oItem[j];
					
					var colW = (j<cols-1) ? oData.aColWidths[j] : "*";

					var spacer = (sAlign=="right") ? "&nbsp;&nbsp;" : ""
					str += "<td width=" +colW+ " " +bg+ " align=" +sAlign+ ">" + rowText+spacer+  "</td>";
				}
			}
		} else if (oData[ix][6] == "sub" && !oData[ix].body) {
			str += "<td class=subhed" +oData.ID+ " " +subStyle+ ">" + oData[ix][1]+ "</TD>";
		} else { 
			str += "<td>" + addHead2Body(oData,ix)+ "</TD>";
		}
		str += "</tr>";
		if (i < nItems-1) { str += sSpacerRow; }	
	}
	return str + "<tr><td colspan=" +cols+" height=5>" +sSpacer+ "</td></tr></table></div>";
}

function printVer(oData) {
	if (!oData.appBG || oData.appBG[1]=="") { oData.appBG = "bgcolor=ffffff"; }
	else if (oData.appBG[1]) { oData.appBG = oData.appBG[1]; }
	oData.copyHeight="";
	oData.copyWidth = "";
	oData.itemsPerPage = null;

	var sTitle = (oData.sTitle) ? oData.sTitle : "";
	var sTmp = "<html><head><title>MSNBC Interactive - " +sTitle+ "</title><base href=http://" +document.domain+ ">"
	sTmp += getAppStyles(oData);
	sTmp += "<STYLE type=text/css> .credit { font-family: Tahoma;font-size: 60%;line-height: 120%;font-weight: normal; color: #666666 } </STYLE>";

	sTmp += "</head><body><S\CRIPT language=javascript>window.onerror = errorTrap;function errorTrap() { return true; };function SwapImage() {} function Swapcopy() {}</S\CRIPT><img src=http://www.msnbc.com/news/mobilechannel/images/msnbc_ban.gif>&nbsp;&nbsp;<font face=arial size=2><b>MSNBC.com</b></font><br><table " +oData.appBG+ " border=0 width=" +oData.appWidth+ " class=app" +oData.ID+ " style=\"" +oData.sBodyFont + "\" cellpadding=0 cellspacing=0>";

	var sPadStyle = "margin-left:"+oData.copyMargin+";margin-right:"+oData.copyMargin+";";

	if (oData.appHeader) { sTmp += "<tr valign=top><td>" +oData.appHeader+ "</td></tr>"; }

	if (oData.appDeck) { sTmp += "<TR VALIGN=TOP><TD class=deck"+oData.ID+"><div style=" +sPadStyle+ ">" +oData.appDeck+ "</div></TD></TR>"; }

	if (oData.appLayout == 7) {
		oData.appLayout = 1;oData.rowAlt = "";
		for (var i=0;i<oData.length;i++) {
			if (!oData[i][10]) { oData[i][10] = "left"; }
		}
	}

	sTmp += "<tr><td valign=top>" + getAppCopyScrolling(oData) + "</td></tr>";

	sTmp += "</table>";
	var sFooter = oData.appFooter;
	if (sFooter.indexOf("background") == 0 || sFooter.indexOf("bgcolor") == 0) {
		sTmp += "<table " +sFooter+ " width=" +oData.appWidth+ " HEIGHT=" +oData.footHeight+ "><tr><td><SPACER TYPE=BLOCK WIDTH=1></td></tr><table>";
	} else {
		sTmp += "<font face=arial size=1>"+sFooter+"</font>";
	
	}
	sTmp += "</body></html>";

	printWin.document.open();
	printWin.document.write(sTmp);
	printWin.document.write("");
	printWin.document.close();
}

function writeLayers(oData,dataname,oField) {
	var sTmp = "";
	if (!dataname) { dataname = oData.ID; }
	if (!oField) { oField = ".body"; }
	else if (parseInt(oField)) { oField = "["+oField+"]"; }
	var nFirst = (!oData[0].body && !oData[0][2]) ? 1 : 0;

	if (document.layers) {
		for (i=0;i<oData.length;i++) {
			var vis = (i==nFirst) ? "show" : "hidden";
			var sBody = eval("oData["+i+"]"+oField);
			sTmp += "<LAYER visibility=\"" +vis+ "\"><html><body>"+sBody + "</body></html></LAYER>";
		}
		sTmp = "<ILAYER name=poptext_" +dataname+ ">" +sTmp+ "</ILAYER>";
	}
	else if (oSniff.ie >= 4) {
		for (i=0;i<oData.length;i++) {
			var vis = (i==nFirst) ? "show" : "none";
			var sBody = eval("oData["+i+"]"+oField);
			sTmp += "<SPAN ID=poptext_" +dataname+ " style='display:" +vis+ "'>" + sBody + "</SPAN>";
		}
	}
	else if (oSniff.nn >= 5) {
		for (i=0;i<oData.length;i++) {
			var vis = (i==nFirst) ? "show" : "none";
			var sBody = eval("oData["+i+"]"+oField);
			sTmp += "<SPAN name=poptext_" +dataname+ " style='display:" +vis+ "'>" + sBody + "</SPAN>";
		}
	}
	oData.nCurPage = nFirst;
	return sTmp;
}

function getAppHeader(oData) {
	sTmp = "";
	var hdrIcon = (!oData.HeaderIcon) ? "" : (oData.HeaderIcon.indexOf("/") == 0 || oData.HeaderIcon.indexOf("http://") == 0) ? "<img src=\"" + oData.HeaderIcon + "\"  vspace=0 hspace=0 align=absmiddle>" : oData.HeaderIcon;

	var aHeader = (!oData.appHeader) ? new Array("","") : (oData.appHeader.indexOf("|") > -1) ? oData.appHeader.split("|") : new Array("",oData.appHeader);
	if (!oData.sTitle) { oData.sTitle = aHeader[1]; }
	if (oData.BoxStyle) {
		document.write("<link rel=stylesheet type=text/css href=\"http://www.msnbc.msn.com/id/" +oData.BoxStyle+ "/\">");
		var header2 = (aHeader[1]) ? "<td nowrap=1 class=boxH2C_" +oData.BoxStyle+ " style=width:" +100*((oData.appWidth-25)/oData.appWidth)+ "%;><span class=\"textSmallBold\">&nbsp;" +aHeader[1]+ "</span></td>" : "";
		
		var iconWid = (hdrIcon) ? 25 : 5;

		sTmp = "<table width=" +oData.appWidth+ " cellspacing=0 cellpadding=0 class=boxH_" +oData.BoxStyle+ "><tr><td class=boxHI_" +oData.BoxStyle+ " width=" +iconWid+ ">" +hdrIcon+ "</td><td nowrap=1 class=boxHC_" +oData.BoxStyle+ "><span class=\"textSmallBold\">" +aHeader[0]+ "&nbsp;</span></td>" +header2+ "</tr></table>";
		
	} else if ((aHeader[0] || aHeader[1]) && !oData.sHedStyle && aHeader[1].toLowerCase().indexOf("<img") == -1 && aHeader[1].toLowerCase().indexOf("<table") == -1) { // blue/grey interactives

		var hfs = (oData.appWidth <= 200) ? 85 : 100;
		oData.sHedStyle = (aHeader[1]) ? "font-family: Arial, Helvetica, sans-serif; font-size: " +hfs+ "%;font-weight:bold;padding-left:4px;background-image:url(\"http://msnbcmedia.msn.com/i/msnbc/Components/ColorBoxes/Styles/ColorBoxImages(globalonlyplease)/component_grey.gif\");width:90%;height:25px;" : "height:20px;";

		var hedAlign = "align=center";
		if (aHeader[0]) {
			var hedAlign = "";
			aHeader[0] = "&nbsp;&nbsp;" + aHeader[0];
			oData.labelStyle = "font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 65%;font-weight:bold; color: #FFFFFF; text-transform:uppercase;background-color:#7788aa;padding-right:10px;";
		}

		sTmp = "<table width=100% cellspacing=0 cellpadding=0><tr><td nowrap=1 class=label"+oData.ID+">" +hdrIcon +aHeader[0]+ "</td><td nowrap=1 class=hed"+oData.ID+" " +hedAlign+ ">" +aHeader[1]+ "</td></tr></table>";

	} else if (oData.appHeader) {
		sTmp = "<DIV class=hed"+oData.ID+">" +oData.appHeader+ "</DIV>";
	}
	oData.appHeader = sTmp;
}

function sGetSpaceRow(rowSpacer,nColspan) {
	var sTmp = "";
	if (parseInt(rowSpacer) > 0) {
		sTmp = "<tr><td height=" +rowSpacer+ " colspan=" +nColspan+ ">" +sSpacer+ "</td></tr>";
	} else if (rowSpacer) {
		sTmp = "<tr><td colspan=" +nColspan+ ">" +rowSpacer+ "</td></tr>";
	} 
	return sTmp;
}


function sGetHref(sType,sUrl,sProps) { // handler for older links
	var oItem = new Array(); oItem[6] = sType; oItem[0] = sUrl; oItem[8] = sProps;
	return getHref(oItem);
}

function getHref(oItem) { 
	var sUrl = oItem[0]; var sType = oItem[6]; var sProps = oItem[8]; var sTarget = oItem[9];
	if (sUrl) {
		var wbDomain = "www.msnbc.msn.com";
		if (legacyServers.indexOf(document.domain) == -1) {
			wbDomain = document.domain;
		}
		if (sUrl.indexOf("/") == 0) { sUrl =  "http://www.msnbc.com" + sUrl; }
		if (sType=="cw") {
			var aProps = (sProps) ? sProps.split("|") : new Array('cw','');
			var sParams = (aProps[1]) ? aProps[1] : (parent.writeHeader) ? "" : "height=440,width=520";
			sUrl = "javascript:OCW('" +sUrl+ "','" +aProps[0]+ "','" +sParams+ "');";
		} else if (sType=="v") { 
			var aProps = (sProps) ? sProps.split("|") : new Array('','','','');
			if (aProps[0].length == 36) { sUrl = aProps[0]; }
			sUrl = "javascript:oMvsLink('00','" +sUrl+ "');";
		} else if (sType=="a") {
			sUrl = "javascript:m_OpenMPV3('" +sType.toUpperCase()+ "','" +sUrl+ "');";
		} else if (sType=="ss" && sUrl.indexOf("/") > -1) {
			sUrl = "javascript:OpenSS('" +sUrl+ "ssMain.asp"+ "','SlideShowhi',0,1,1);";
		} else if (sType=="ss") {
			sUrl = "javascript:SSOpen('"+sUrl+"');";
		} else {
			if (parseInt(sUrl)) { sUrl = "http://" +wbDomain+"/id/" +sUrl+ "/"; }
		}
		if (sTarget) { sUrl += " target=" + sTarget; }
		else if (sUrl.indexOf("target") == -1) { sUrl += " target=_top"; }
		return sUrl;
	} 
}

function getTeaseCode(oData,nItem) { // get html for tease image
	if (typeof oData == "object") {
		var oItem = oData[nItem];
	} else if (oData.toLowerCase().indexOf("<img") == 0) {
		oItem = new Array(); oData = oData.substring(oData.indexOf(" ")+1);
		while (oData.indexOf("=") != -1) {
			var charPos = oData.indexOf("=");
			var aTmp = new Array(oData.substring(0,charPos), oData.substring(charPos + 2,oData.indexOf("\" ")));
			oData = oData.substring(charPos + 2);	
			oData = oData.substring(oData.indexOf("\" ")+2); // assume qoute delimiters
			if (aTmp[0].toLowerCase() == "src") { oItem[3] = aTmp[1]; }
			if (aTmp[0].toLowerCase() == "align") { oItem[10] = aTmp[1]; }
			if (aTmp[0].toLowerCase() == "byline") { oItem[11] = aTmp[1]; }
			if (aTmp[0].toLowerCase() == "credit") { oItem[12] = aTmp[1]; }
			if (aTmp[0].toLowerCase() == "height") { oItem[13] = aTmp[1]; }
			if (aTmp[0].toLowerCase() == "width") { oItem[14] = aTmp[1]; }
			if (aTmp[0].toLowerCase() == "border") { oItem[15] = aTmp[1]; }
		 }
	}
	
	var imgSrc = oItem[3];
	var sHref = getHref(oItem);
	var sTmp = "";	var imgAlign = "";var imgPad = ""; var sCredit = "";

	var linkStart = "";var linkEnd = "";
	if (oItem[10] == "nav") { linkEnd = "</a>"; }
	else if (sHref) { linkStart = "<a href="+sHref+">";	linkEnd = "</a>"; }

	var caption = (oItem[2] && oItem.body) ? "<font face=arial size=1>" +oItem[2]+ "</font>" : "";

	if ((oItem[11] || oItem[12]) && oData.appLayout != 7) {
		var sSep = (oItem[11] && oItem[12]) ? " / " : "";
		var sOverlay = (oItem[10] == "bg") ? "position:absolute;top:" +(oItem[13]-15)+ ";right:" +(oData.copyWidth - oItem[14]+5)+ ";color:#C6C6C6;": "";
		sCredit += "<div class=credit style=\"text-align:right;margin-bottom:5px;" +sOverlay+ ";\">" +oItem[11]+ sSep +oItem[12]+ "</div>";
	}

	if (imgSrc.indexOf(".swf") > -1) {
		var oTmp=new flashObj2();
		oTmp.ID = oData.ID + nItem;
		oTmp.flashFile = imgSrc;
		oTmp.url = getHref(oItem[6]);
		oTmp.height = oItem[13];
		oTmp.width = oItem[14];
		imgSrc = oTmp.render();
	} else if (imgSrc && imgSrc.indexOf("<") == 0) { // custom coding
		sTmp = imgSrc;
	} else if (!oItem[4] && imgSrc && imgSrc.indexOf("<") == -1) { // img ref only
		if (imgSrc.indexOf("/") != 0 && imgSrc.indexOf("http:") != 0) {
			imgSrc = (oData.altPath) ? oData.altPath + imgSrc : "/d/ip/" +oData.ID+ "/" + imgSrc;
		}
		// prepend legacy domain onto non-wb3 image references
		if (bWB3 && imgSrc.indexOf("/") == 0 && imgSrc.indexOf("/i/") == -1 && imgSrc.indexOf("/j/") == -1) { imgSrc =  "http://www.msnbc.com" + imgSrc; }

		var imgAlt = (oItem[5]) ? oItem[5] : (oItem[1] && oItem[1].indexOf("<") == -1) ? oItem[1] : "";
		var imgAlign = (oItem[10]) ? " align="+oItem[10] : "";
		var imgBrdr = (oItem[15]) ? " style=\"border:1px solid " +oItem[15]+ ";\"" : "";
		var imgW = (oItem[14]) ? " width="+oItem[14] : "";
		var imgH = (oItem[13]) ? " height="+oItem[13] : "";
		if (oItem[10] == "bg") {
			var sBody = (oItem.body) ? oItem.body : "";
			sTmp = "<TABLE cellpadding=0 cellspacing=0 background="+imgSrc+" " +imgH+ " " +imgW+ "><tr valign=top><td>" +caption + sBody + sCredit + "</td></tr></table>";
		} else {
			var imgPad = (!oItem[10]) ? "" : (oItem[10] == "left") ? "style=margin-right:5px;" : "style=margin-left:5px;";
			imgSrc = "<img src="+imgSrc + imgBrdr + " alt=\"" +imgAlt+ "\" " +imgW+ " " +imgH+ " border=0>";
			sTmp = " <table cellpadding=0 cellspacing=0 " +imgW+ " border=0 " +imgAlign+ " " +imgPad+ "><tr><td>" +linkStart + imgSrc + linkEnd + "</td></tr><tr><td>" + sCredit;
			if (caption) { sTmp += "<div class=credit>" +caption+ "</div><hr noshade=true size=1 color=#C0C0C0>"; }
			sTmp += "</td></tr></table>";
		}
	}
	return sTmp;
}

function addHead2Body(oData,nItem) {
	var sBody = (!oData.rows && oData[nItem].body) ? oData[nItem].body : (oData.rows) ? oData.rows[nItem][1] : "";
	var sHed = (oData.rows) ? oData.rows[nItem][0] : oData[nItem][1];
	var re = /class=headline/g;
	if (sHed) {
		if (!oData.rows && oData[nItem][0]) {
			var sHref = getHref(oData[nItem]);
			sHed = "<font class=bullet" +oData.ID+ ">&#0149; </font><a href="+sHref+" class=headline>" +sHed + "</a>";
		} else if (sBody || oData.rows || oData.itemsPerPage != 1) {
			sHed = "<font class=headline>"+sHed+"</font>";		
		}
	}
	if (sBody || oData.rows || !oData.itemsPerPage) {
		if (oData.appFmt == 5 || oData.appLayout == 7 || oData.appLayout == 8 || (oData.itemsPerPage != 1 && (sBody.indexOf("class=headline") == -1 && sBody.indexOf("<headline/>") == -1))) { sBody = sHed+"<br>"+sBody; }

		sBody = sBody.replace("<headline/>",sHed);
		sBody = sBody.replace(re,"class=\"headline"+oData.ID+"\"");
	}
	return sBody;
}

function addUrl2Column(oData) { // if 1st col is url, combine w/ 2nd col
	if (oData.rows) {
		if (oData.aColHeaderText && oData.aColHeaderText[0].toLowerCase() == "id" && oData.aColWidths[0] == 0) { // if URL in first column
			for (var i=0;i<oData.rows.length;i++) {
				if (oData.rows[i][0] && oData.rows[i][1]) {
					oData.rows[i][1] = "<font class=bullet" +oData.ID+ ">&#0149; </font><a href="+sGetHref("",oData.rows[i][0])+" class=headline>" +oData.rows[i][1] + "</a>";
				} else {
					oData.rows[i][1] = "&#0151; " +oData.rows[i][1];
				}
				for (j=0;j<oData.rows[i].length-1;j++) {
					oData.rows[i][j] = oData.rows[i][j+1];
				}
			}
			for (j=0;j<oData.aColWidths.length-1;j++) {
				oData.aColHeaderText[j] = oData.aColHeaderText[j+1];
				oData.aColWidths[j] = oData.aColWidths[j+1];
			}
			oData.aColWidths.length -= 1;
		}
	} 
}

function getQueryParams() {
	var sQuery = location.search.substring(1);
	var aTmp = new Array();
	if (sQuery) {
		aTmp = sQuery.split("&");
		for (var i=0;i<aTmp.length;i++) {
			var aTmp2 = aTmp[i].split("=");
			aTmp[aTmp2[0].toLowerCase()] = aTmp2[1];
		}
	} 
	return aTmp;
}