//Updating code for quizzes; Tony Patino
// Rendering code for quizzes; Author - Brenden West
/*
data structure:

  oData[QUESTION #][ITEM #] = new Array("text",totals,value);
  oData[QUESTION #].answer 

*/
if (!window.sSelectedImg) { document.write("<S"+"CRIPT src=http://www.msnbc.msn.com/js/std.js></S"+"CRIPT>"); }
if (!window.bCommonBrill) { document.write("<S"+"CRIPT src=http://msnbcmedia.msn.com/i/msnbc/components/interactives/tools/common_functions.js></S"+"CRIPT>"); }

// global vars
var sUrl = (location.search) ? location.href.substring(0,location.href.indexOf("?")) : location.href;
var sLoc = location.href.substring(0,location.href.lastIndexOf("/")+1);

function quizDefaults(oData) {
	// settings that overlap w/ component defaults 
	if (!oData.sHedStyle) { oData.sHedStyle = ""; }
	if (!oData.headlineStyle) { oData.headlineStyle = "color:#000000;"; }
	if (!oData.BoxStyle) { oData.sHedStyle = "font-family: Georgia, \"Times New Roman\", Times, serif;font-size: 180%;color: #CC0000;line-height: 110%;font-weight:normal;" + oData.sHedStyle;  }
	if (!oData.rowSpacer) { oData.rowSpacer = 15; }
	if ((oData.appFmt==8 || oData.appFmt==9) && !oData.copyHeight) { oData.copyHeight = 340; }
	
	oData.bDhtml = !(parseInt(oData.bDhtml)==0);

	getAppDefaults(oData);

	// QUIZ/SURVEY specific settings
	if (oData.appBG) { oData.appBG = oData.appBG.replace("bgcolor=","background-color:"); }

	if (!oData.appDeck) { oData.appDeck = new Array("",""); }
	else if (typeof oData.appDeck == "string") { oData.appDeck = new Array(oData.appDeck,oData.appDeck); }
	if (!oData.appDeck[1]) { 
		oData.appDeck[1] = "Thanks for taking our quiz."; 
		if (oData.quiztype != 2) { oData.appDeck[1] += " You answered <FONT COLOR=#cc0000><SCORE></font> of the questions correctly."; }
	}
//oData.bDhtml=0;
	if (!oData.columns) { oData.columns=1; }
	if (!oData.sCorrect) { oData.sCorrect= "Correct"; }
	if (!oData.sIncorrect) { oData.sIncorrect = "<RESPONSE> is not correct."; }
	if (oData.bDispQNums == null) { oData.bDispQNums=0; }
	if (oData.bResults == null) { oData.bResults=1; }
	if (oData.bRequireAll == null) { oData.bRequireAll=0; }

	if (!oData.butSubmit) { oData.butSubmit = "http://msnbcmedia.msn.com/i/msnbc/Components/Art/SITEWIDE/buttons/Submit.gif"; }
	if (!oData.butNext) { oData.butNext = "http://msnbcmedia.msn.com/i/msnbc/Components/Art/SITEWIDE/buttons/next_arrow.gif"; }
	if (!oData.butStart) { oData.butStart = "http://msnbcmedia.msn.com/i/msnbc/Components/Art/SITEWIDE/buttons/launch.gif"; }
	if (!oData.butAgain) { oData.butAgain = ""; }
	if (oData.profiles) {
		for (i=0;i < oData.profiles.length;i++) {
			oData.profiles[i].count = 0;
		}
	}
	oData.score = (aQuery["score"]) ? parseInt(aQuery["score"]) : 0;
}


function displayQuiz(oData) {
	quizDefaults(oData);
	if (window.textframe && oData.itemsPerPage == 1) { // called into custom frameset
		return SwapQuizFrame(oData,0);
	} else if (oData.appFmt==8) {
		quizCW(oData);
	} else if (oData.appFmt==9) { // I-frame
		quizIframe(oData);
	} else if (location.search.indexOf("score=") == -1) {
		quizForm(oData);
	} else {
		quizResults(oData);	
	}
}

function quizForm(oData) {
	var qNum = 0;
	var qNumDisp = "";
	var widthQ = (oData.appWidth-14*oData.columns-2*oData.copyMargin)/oData.columns; 
	var nToteCols = 2*oData.columns + 2;
	var marginCol = "<TD width=" +oData.copyMargin+ ">" +sSpacer+ "</TD>";
	
	var styleID = oData.ID;
	if (oData.BoxStyle) {
		styleID = oData.BoxStyle;
		if (!window.cssList) { cssList = new Array(); }
		if (window.getCSS) { getCSS(oData.BoxStyle); }
	}

  	document.write(getAppStyles(oData));

	document.write("<a name=anc_" +oData.ID+ "><TABLE CELLPADDING=0 CELLSPACING=0  WIDTH="+oData.appWidth+" " + oData.appBG +"><form name=fm_" +oData.ID+ ">");

	if (oData.appHeader) {
		getAppHeader(oData);
		document.write("<TR valign=middle><TD height=20>" + oData.appHeader + "</TD></TR>");
	}

	document.write("<tr><td><table cellpadding=0 cellspacing=0 id=quiztableA class=boxB_" +styleID+ " style=\"" +oData.sBodyFont+ ";\">");

	var mainArt = (oData.mainArt) ? getTeaseCode(oData.mainArt) : "";
	var sDeck = (oData.appDeck[0]) ? "<span class=deck"+oData.ID+" style=width:100%;>" +oData.appDeck[0]+ "</span>" : "";
	if (sDeck || mainArt) { document.write("<TR valign=top><TD colspan=" +nToteCols+ " width=100%>" + mainArt + sDeck+ "</TD></TR>"); }

	for (i=1; i < oData.length; i++) {
		if (oData.bDispQNums) { qNum++; qNumDisp = qNum + ". "; }
		if (i == 1) {
			document.write(sGetSpaceRow(15,nToteCols));
		} else {
			document.write(sGetSpaceRow(oData.rowSpacer,nToteCols));
		}
		document.write("<TR>"+marginCol + "<TD colspan=" +nToteCols+ " class=headline" +oData.ID+ ">" + qNumDisp + oData[i][0][0] + "</b></TD>"+marginCol + "</TR><TR><TD colspan=" +nToteCols+ " height=10>" +sSpacer+ "</TD></TR><tr><td>");
	
		for (var j=1;j<oData[i].length;j++) {
			if ((j-1) % oData.columns == 0) { document.write("<TR><TD colspan=" +nToteCols+ " height=2>" + sSpacer+ "</TD></TR><TR VALIGN=TOP>"); }
			document.write(marginCol + "<TD width=14><input type=radio name=Q" + i + " value="+oData[i][j][2]+"></TD><TD width=" +widthQ+ ">"+ oData[i][j][0] +"</TD>");
			if (j % oData.columns == 0) { document.write(marginCol + "</TR>"); }
		}
	}

	document.write("</td></tr><tr><td colspan=" +nToteCols+ " height=20>" +sSpacer+ "</td></tr><tr><td valign=top colspan=" +nToteCols+ ">" + makeButton(oData.butSubmit,oData.ID,"ScoreQuiz(" +oData.ID+ ")") + "</td></tr><tr><td colspan=" +nToteCols+ " height=10>" +sSpacer+ "</td></tr>");

	document.write("</table></td></tr>"); // end box

	if (oData.appFooter) { document.write("<tr><td class=credit>" +oData.appFooter+ "</td></tr>"); }

	document.write("</FORM></TABLE></a>");
}


function ScoreQuiz(oData) { 
	var score = 0;
	var sTmp = "";
	var bChecked = 0;
	var bQuiz = 0;
	for (i=1;i<oData.length;i++) {
		var oQuestion = eval("document.fm_" +oData.ID+".Q"+i);
		if (oQuestion.type=="checkbox" && oQuestion.checked) {
			var nVal = parseInt(oQuestion.value)
			score += nVal;
			if (oData.profiles && oData.profiles[nVal]) { oData.profiles[nVal].count++; }
			sTmp += nVal;
			bChecked=1;
		} else if (oQuestion.length) {
			for (var j=1;j<oData[i].length;j++) {
				if (oQuestion[j-1].checked) {
					var nVal = parseInt(oQuestion[j-1].value)
					score += nVal;
					if (oData.profiles && oData.profiles[nVal]) { oData.profiles[nVal].count++; }
					sTmp += j;
					bChecked=1;
				}
			}
		}
		if (oData.bRequireAll) {
			if (!bChecked) {
				alert("Please answer all questions");break;
			} else if (i < oData.length-1) {
				bChecked=0;
			}
		}
		sTmp += ",";
		if (oData[i].answer) { bQuiz=1; }
	}

	if (!bChecked && !oData.bRequireAll) { alert("Please answer at least one question"); }
	else if (bChecked) {
		if (bQuiz) { score = Math.round(100*(score/(oData.length-1))) + "&resp="+sTmp; }
		else if (oData.profiles && (oData.profiles[oData.profiles.length-1][0] - oData.profiles[0][0] == oData.profiles.length-1)) {
			// if profile ranges have only one value, determine which was selected most
			score = 0;
			var lowest = oData.profiles.length-1;
			for (var i=1;i<oData.profiles.length;i++) {
				if (oData.profiles[i].count > oData.profiles[score].count) { score = i; }
				if (oData.profiles[i].count < oData.profiles[lowest].count) { lowest = i; }
			}
			if (oData.profiles[score].count == oData.profiles[lowest].count) { score = 0; } 
		}

		var sHref = addParamToUrl(location.href,"score",score);
		if (sHref.indexOf("#") > -1) { sHref = sHref.substring(0,sHref.indexOf("#")); }
		location.href = sHref + "#anc_" +oData.ID;
	}
}

function ScoreQuizFrame(oData) {
	oData.nSelected = -1;
	var bChecked=0;
	var sFrame = (window.quizframe) ? "quizframe" : "textframe";
	var oQuestion = eval(sFrame+".document.fm_" +oData.ID+ ".choice");
	for (var j=0;j<oData[oData.nCurPage].length-1;j++) {
		if (oQuestion[j].checked) {
			var nVal = parseInt(oQuestion[j].value);
			oData.score += parseInt(oQuestion[j].value);
			bChecked=1;
			oData.nSelected = j+1;
			if (oData.profiles && oData.profiles[nVal]) { oData.profiles[nVal].count++; }
			break;
		}
	}
	if (oData.bRequireAll && !bChecked) {
		alert("Please answer each question");
	} else {

		var nNext = (oData[oData.nCurPage].answer && oData.bResults) ? -1*oData.nCurPage : oData.nCurPage+1;

		if (oData.bDhtml || oData.quiztype==1) { 
			return SwapQuizFrame(oData,nNext); // zero-based
		} else {
			// use 1-based page #s on page reload
			var sHref = addParamToUrl(addParamToUrl(parent.location.href,"score",oData.score),"pg",nNext+1);
			if (sHref.indexOf("#") > -1) { sHref = sHref.substring(0,sHref.indexOf("#")); }
			parent.location.replace(sHref +"#anc_" + oData.ID); 
		}

	}
}


function quizResults(oData) {
	var bQuiz = 0;
	var score = oData.score;
	if (aQuery["resp"]) {
		var aResponses = aQuery["resp"].split(",");
		bQuiz=1;
		score = score + "%";
	}

	var qNum = 0;
	var qNumDisp = "";
	var marginCol = "<TD width=" +oData.copyMargin+ ">" +sSpacer+ "</TD>";
	var styleID = oData.ID;
	if (oData.BoxStyle) {
		styleID = oData.BoxStyle;
		if (!window.cssList) { cssList = new Array(); }
		if (window.getCSS) { getCSS(oData.BoxStyle); }
	}

  	document.write(getAppStyles(oData));
	document.write("<a name=anc_" +oData.ID+ "></a><TABLE CELLPADDING=0 CELLSPACING=0  WIDTH="+oData.appWidth+" " + oData.appBG +">");
	if (oData.appHeader) {
		getAppHeader(oData);
		document.write("<TR valign=middle><TD height=20>" + oData.appHeader + "</TD></TR>");
	}

	document.write("<tr><td ><table cellpadding=0 cellspacing=0 id=quiztableB class=boxB_" +styleID+ " style=\"" +oData.sBodyFont+ ";\">");

	var mainArt = (oData.mainArt) ? getTeaseCode(oData.mainArt) : "";
	var sDeck = (oData.appDeck[1]) ? oData.appDeck[1].replace(/<SCORE>/g,"<FONT color=#CC0000>" + score + "</FONT>") : "";
	if (sDeck || mainArt) { document.write("<TR valign=top><TD colspan=3 width=100% class=deck"+oData.ID+">" + mainArt + sDeck+ "</TD></TR>"); }

	if (oData.profiles) {
	
		var scoreGrp = 1;
		for (i=0;i<oData.profiles.length;i++) {
			if (oData.score >= oData.profiles[i][0] && oData.score <= oData.profiles[i][1]) {
				scoreGrp = i+1;
				document.write("<tr>" +marginCol+ "<td colspan=2>"+oData.profiles[i][2]+"</td></tr><tr><td colspan=3 height=5>"+sSpacer+"</td></tr>");
			}
		}
		var oLV = (oData.vote) ? eval("window." + oData.vote) : "";
		if (oLV && aResponses) { // log score and show results for all readers
			var colWidth = (oData.appWidth-20)/oData.profiles.length+1;
		
			var sTmp = "<tr>" +marginCol+ "<td colspan=2>Here's how all readers fared:<br><table border=1px bordercolor=#000099 style=\"font-family:verdana;font-size:10px;border-collapse:collapse;\"; cellpadding=3><tr><td width=" +colWidth+ "><b>Score</b></td>";
			for (i=0;i<oData.profiles.length;i++) {
				sTmp += "<td width=" +colWidth+ " align=center>" +oData.profiles[i][0]+ "-" +oData.profiles[i][1]+ " %</td>";
			}

			sTmp += "</tr><tr><td width=" +colWidth+ "><b>Readers</b></td>";
			for (i=0;i<oData.profiles.length;i++) {
				sTmp += "<td width=" +colWidth+ " align=center>" +Math.round(100*(oLV[0][i+1][1]/oLV[0][0][1]))+ " %</td>";
			}
			sTmp += "</tr></table><font class=credit style=font-size:90%>* " +oLV[0][0][1]+ " total responses</font></td></tr>";
			document.write(sTmp);
			if (oLV.display == "vote") { // log vote
				var srvResp = "http://msnbc.msn.com/apps/modules/survey/vote.aspx?res=2&lvname=" + oData.vote+"&author=" +oLV.author+ "&Q0=" + scoreGrp;

				for (i=0;i<aResponses.length-1;i++) {
					srvResp += "&Q" + (i+1) + "=" + aResponses[i];
				}
				document.write("<img src=\"" +srvResp+ "\" height=1 width=1 style=display:none;>");
			}
		}

	}

	if (bQuiz & oData.bResults) { // show correct answers
	for (i=1; i < oData.length; i++) {
		var sCorrect="";

		if (oData.bDispQNums) { qNum++; qNumDisp = qNum + ". "; }
		if (i == 1) {
			document.write(sGetSpaceRow(15,3));
		} else {
			document.write(sGetSpaceRow(oData.rowSpacer,3));
		}
		document.write("<TR>" +marginCol+ "<TD class=headline" +oData.ID+ ">" + qNumDisp + oData[i][0][0] + "</TD>" +marginCol+ "</TR>");
		if (aResponses[i-1]) {  
			var nSelected = parseInt(aResponses[i-1]);
			if (oData[i][nSelected][2] == 1) { // answered correctly
				sCorrect = "<font color=#669966><b>" + oData.sCorrect.replace(/<RESPONSE>/g,oData[i][nSelected][0]) + "</b></font><br>";
			} else { 
				sCorrect = "<font color=#cc0000><b>" + oData.sIncorrect.replace(/<RESPONSE>/g,oData[i][nSelected][0]) + "</b></font><br>";
			}
		}
		document.write("<TR>" +marginCol+ "<TD style=\"padding-left:15px;\">"+sCorrect + oData[i].answer + "</TD>" +marginCol+ "</TR>");
	}

	}
	document.write("</table></td></tr>"); // end box

	if (oData.appFooter) { document.write("<tr><td class=credit>" +oData.appFooter+ "</td></tr>"); }

	document.write("</TABLE>");
}

function quizIframe(oData) {
	var styleID = oData.ID;
	if (oData.BoxStyle) {
		styleID = oData.BoxStyle;
		if (!window.cssList) { cssList = new Array(); }
		if (window.getCSS) { getCSS(oData.BoxStyle); }
	}
	document.write(getAppStyles(oData));
	if (window.bDhtml) {
		document.write("<a name=anc_" +oData.ID+ "><TABLE CELLPADDING=0 CELLSPACING=0  WIDTH="+oData.appWidth+" class=app" + oData.ID + " " + oData.appBG +"><form name=fm_" +oData.ID+ ">");

		if (oData.appBG.indexOf("|") > 0) { oData.appBG = oData.appBG.split("|"); }

		if (oData.appHeader) {
			getAppHeader(oData);
			document.write("<TR colspan=2 valign=middle><TD height=20>" + oData.appHeader + "</TD></TR>");
		}
		document.write("<tr><td colspan=2><table cellpadding=0 cellspacing=0 id=quiztableC class=boxB_" +styleID+ " id=boxB_" +styleID+ " style=\"" +oData.sBodyFont+ "\">");

		var mainArt = (oData.mainArt) ? getTeaseCode(oData.mainArt) : "";
		if (mainArt) { document.write("<TR valign=top><TD width=100%>" + mainArt + "</TD></TR>"); }

		if (oData.BoxStyle) {
			var oBox = getObj("boxB_"+styleID);
			var sBG = oBox.currentStyle.backgroundColor;
			if (sBG.replace("#","").length == 3) { sBG += sBG.replace("#",""); }
			oData.appBG = "bgcolor=" + sBG;
			oData.copyWidth -= 2;
		}

		document.write("<tr><td><IFRAME name=textframe id=txtframe_" +oData.ID+ " SRC=javascript:parent.SwapQuizFrame(parent." +oData.ID+ ","+oData.nCurPage+"); SCROLLING=auto width=" +oData.copyWidth+ " height=\"" +oData.copyHeight+ "\" frameborder=0 marginheight=0 marginwidth=0></IFRAME></td></tr>");

		document.write("</table></td></tr>"); // end box

		if (oData.appFooter) { document.write("<tr><td colspan=3 class=credit style=background-color:white;>" +oData.appFooter+ "</td></tr>"); }

		document.write("</FORM></TABLE></a>");

	} else { BigRedLink(oData); }

}

function quizCW(oData,sTarget) {
	oData.bPrintable=0;

	getQuizCWDefaults(oData);

	var sOpener = "";
	var oDoc = "document";
	if (sTarget) {
		sOpener = "opener.";
		oDoc = sTarget+"."+oDoc;
	}
	oDoc = eval(oDoc);

	var sPath = location.href.substring(location.href.indexOf("//")+2);
	sPath = sPath.substring(sPath.indexOf("/"));

	var nWindowHeight = oData.headHeight + oData.navHeight + oData.copyHeight + 40;

	sHeader = "<HTML><BASE HREF=" +sLoc+ "><body topmargin=0 leftmargin=0 marginheight=0 marginwidth=0>"+oData.appHeader+"</body></html>";

	var sFootFrame = "";
	var sRows = oData.copyHeight + oData.footHeight;
	if (oData.appFooter) {
		sRows = oData.copyHeight + ","+oData.footHeight;

		sFooter = "<HTML><BASE HREF=" +sLoc+ "><body topmargin=0 leftmargin=0 marginheight=0 marginwidth=0>"+getFooterLinks(oData,sPath)+"</body></html>";
		nWindowHeight += oData.footHeight;

		sFootFrame = "<FRAME SRC=\"javascript:parent." +sOpener+ "sFooter;\" name=footframe SCROLLING=no marginheight=0>";
	}
	if (oData.appLayout==1) {
		sRows = oData.navHeight + ","+sRows;
	}

	var firstPage = oData.nCurPage;	oData.nCurPage = -1;

	oDoc.write("<HTML><TITLE>" +oData.sTitle+ "</TITLE><FRAMESET cols=" +oData.appWidth+ ",* rows=" +nWindowHeight+ ",* border=0 frameborder=0 framespacing=0><FRAMESET ROWS=" +oData.headHeight+ "," +sRows+ ",40 border=0 frameborder=0 framespacing=0><FRAME SRC=\"javascript:parent." +sOpener+ "sHeader;\" name=headframe SCROLLING=no marginheight=0 marginwidth=0>");

	var sTextFrame = "<FRAME SRC=\"javascript:parent.SwapQuizFrame(parent." +oData.ID+ "," +firstPage+ ");\" name=textframe SCROLLING=auto marginheight=0 marginwidth=0>";

	sNav = "<HTML><BASE HREF=" +sLoc+ "><body topmargin=0 leftmargin=0 marginheight=0 marginwidth=0 " + oData.appBG[0] + "><SPACER type=block width=1></body></html>";

	var sNavFrame = "   <FRAME SRC=\"javascript:parent.sNav\" name=navframe SCROLLING=auto marginheight=0 marginwidth=0>";

	if (oData.appLayout==1) {
		oDoc.write(sNavFrame+sTextFrame);
	}
	else if (oData.appLayout==2) {
		oDoc.write(sTextFrame+sNavFrame);
	}
	else if (oData.appLayout==3) {
		oDoc.write("<FRAMESET cols=" +(oData.appWidth-oData.copyWidth)+ ",*>"+sNavFrame+sTextFrame+"</FRAMESET>");
	}
	else if (oData.appLayout==4) {
		oDoc.write("<FRAMESET cols=" +oData.copyWidth+ ",*>"+sTextFrame+sNavFrame+"</FRAMESET>");
	}

	var sLic = (oData.nOfferLvl) ? "&appID="+oData.ID : "";
	var sAd = (aQuery["ad"] == "0") ? "&ad=0" : "";

	oDoc.write(sFootFrame+"<FRAME SRC=\"/ads/dw/dw_ads.asp?m=" +oData.mainsectionID+ "&n=" +oData.navsectionID+oData.sAdprms+ sLic + "&tp=" +sPath+ sAd+ "\" SCROLLING=no marginheight=0></FRAMESET><frame src=\"about:blank\" scrolling=no></FRAMESET><BODY></BODY></HTML>");
	oDoc.close();
}


function SwapQuizFrame(oData,nQuestion) {
	var sBG = (!oData.appBG) ? "" : (typeof oData.appBG != "string") ? oData.appBG[1] : oData.appBG;

	var tableHeight = oData.copyHeight-2*oData.copyMargin;
	var tableWidth = oData.copyWidth-1-2*oData.copyMargin;

	var sParent = "parent.";

 	var sTmp = "<table cellpadding=0 cellspacing=0 border=0 width="+tableWidth+" height="+tableHeight + " class=font1" +oData.ID + ">";

	var sBody = "";

	if (nQuestion==0) {	// show intro page
		if (oData.bDhtml) { 
			sAction = "parent.SwapQuizFrame(parent."+oData.ID+",1)"; 
		} else {
			var sHref = addParamToUrl(parent.location.href,"pg",2);
			if (sHref.indexOf("#") > -1) { sHref = sHref.substring(0,sHref.indexOf("#")); }
			sAction = "parent.location.replace('" + sHref +"#anc_" + oData.ID +"')"; 
		}
		var sButton = makeButton(oData.butStart,oData.ID,sAction);

		sBody += "<tr><td valign=top style=height:100% class=deck" +oData.ID+ ">"+oData.appDeck[0]+"</td></tr><tr><td valign=top>"+sButton+"</td></tr>";

	} else if (nQuestion == oData.length) {	// final results
		if (oData.quiztype == 2) {
			// matchmaker quizzes. Not designed for when page reloads
			if (oData.bDhtml && oData.profiles && oData.profiles[oData.profiles.length-1][0] - oData.profiles[0][0] == oData.profiles.length-1) { 
				var score = 0;
				var nSelected =  0;
				for (var i=1;i<oData.profiles.length;i++) {
					if (oData.profiles[i].count > 0) { nSelected++; }
					if (oData.profiles[i].count > oData.profiles[score].count) { score = i; }
				}
				if (oData.profiles[score].count == (oData.profiles.length-1) / (oData.length -1) && nSelected == oData.profiles.length-1) { score = 0; } 
				oData.score = score;
			}
			var sScore = (oData.score) ? oData.score : 0; 
		} else {
			oData.score = (oData.score) ? Math.round(100*(oData.score/(oData.length-1))) : 0; 
			var sScore = oData.score + "%";
		}

		sBody += "<tr><td valign=middle><span class=deck" +oData.ID+ ">";
		if (oData.appDeck[1]) { 
			sBody += oData.appDeck[1].replace(/<SCORE>/g,sScore) +"<p>";
		} else {
			sBody += "Your score is "+ sScore +"<p>";
		}

		if (oData.profiles) {
			for (i=0;i<oData.profiles.length;i++) {
				if (oData.score >= oData.profiles[i][0] && oData.score <= oData.profiles[i][1]) {
					sBody += oData.profiles[i][2];
				}
			}
		}
		sBody += "</td></tr>";

	} else if (nQuestion < 0 && oData[nQuestion*-1].answer && oData.bResults) { 
		nQuestion = -1 * nQuestion;
		var nScore = (oData.score !=0) ? Math.round(100*(oData.score/nQuestion)) : 0;
		var sText = "";
		if (oData[nQuestion][oData.nSelected]) {
			if (oData[nQuestion][oData.nSelected][2] == 1) { // answered correctly
				sText += "<font color=#669966>" + oData.sCorrect.replace(/<RESPONSE>/g,oData[nQuestion][oData.nSelected][0]) + "</font>";
			} else { 
				sText += "<font color=#cc0000>" + oData.sIncorrect.replace(/<RESPONSE>/g,oData[nQuestion][oData.nSelected][0]) + "</font>";
			}
		}
	
		if (oData.bDhtml) { 
			sAction = "parent.SwapQuizFrame(parent."+oData.ID+"," +(nQuestion+1)+ ")"; 
		} else {
			var sHref = addParamToUrl(addParamToUrl(parent.location.href,"score",oData.score),"pg",nQuestion+2);
			if (sHref.indexOf("#") > -1) { sHref = sHref.substring(0,sHref.indexOf("#")); }
			sAction = "parent.location.replace('" + sHref +"#anc_" + oData.ID +"')"; 
		}
		var sButton = makeButton(oData.butNext,oData.ID,sAction);

		sBody += "<tr><td height=20 align=right valign=top >Question <b>" + nQuestion+ " / "+ (oData.length-1)+"</b></td></tr><tr valign=top><td style=height:100% ><FONT class=headline" +oData.ID+ ">" +sText+ "</font><br>" +oData[nQuestion].answer+ "</td></tr><tr><td height=20><B>Your Score is " +nScore+ "%</B></td></tr><tr><td valign=top>" +sButton+ "</td></tr>";

	} else {	// show question and choices

		sQnum = (oData.bDispQNums) ? nQuestion+ ". " : "";
		var nToteCols = 2*oData.columns;

		sBody += "<FORM name=fm_" +oData.ID+ "><tr><td height=20 colspan=" +nToteCols+ " align=right valign=top>Question <b>" + nQuestion+ " / "+ (oData.length-1)+"</b></td></tr><tr><td colspan=" +nToteCols+ " valign=top  style=height:100%><FONT class=headline" +oData.ID+ ">" +sQnum+ oData[nQuestion][0][0]+ "</font><table style=\"" +oData.sBodyFont+ ";font-size:100%;\">";

		for (j=1;j<oData[nQuestion].length;j++) {
			if ((j-1) % oData.columns == 0) { sBody += "<TR VALIGN=TOP>"; }
			sBody += "<td width=12 valign=top><input type=radio name=choice value="+oData[nQuestion][j][2]+"></td><td width=" +(oData.appWidth-12-2*oData.copyMargin) + ">" +oData[nQuestion][j][0]+ "</td>";
			if (j % oData.columns == 0) { sBody += "</TR>"; }
		}

		var btn = (oData.quiztype==2) ? oData.butNext : oData.butSubmit;
		var sButton = makeButton(btn,oData.ID,"parent.ScoreQuizFrame(parent."+oData.ID+")");

		sBody +="</table></td></tr><tr><td valign=top colspan=" +nToteCols+ ">" +sButton+ "</td></tr></FORM>";
		
	}

	sTmp += sBody + "</TABLE>";
	sTmp += "<STYLE type=text/css> .credit { font-family: Tahoma;font-size: 60%;line-height: 120%;font-weight: normal; color: #666666 } </STYLE>";
	sTmp = "<html><SCR"+"IPT src=http://www.msnbc.msn.com/js/std.js></SCR"+"IPT><body " +sBG+ " text=#000000 link=#000000 alink=#000000 vlink=#666666 topmargin=" +oData.copyMargin+ " leftmargin=" +oData.copyMargin+ " marginheight=" +oData.copyMargin+ " marginwidth=" +oData.copyMargin+ "><BASE HREF=" +sLoc+ ">" + getAppStyles(oData) + sTmp + "</body></html>";
	oData.nCurPage = nQuestion;

	return sTmp; 
}

// COMMON FUNCTIONS
function getFooterLinks(oData) {
	if (oData.appFooter.indexOf("background") == 0 || oData.appFooter.indexOf("bgcolor") == 0) {

		var sPrintable = (oData.bPrintable != 0) ? "<font class=bullet>&#0149;</font>&nbsp;<a href=\"javascript:parent.OPW('" +oData.ID+ "','printVer');\">print this</a>&nbsp;&nbsp;" : "";

		var sCredits = (!oData[oData.length-1][1]) ? "<font class=bullet>&#0149;</font>&nbsp;<a href=\"javascript:parent.SwapFrameCopy('" +oData.ID+ "'," +(oData.length-1)+ ");\">credits</a>&nbsp;&nbsp;" : "";
		
		var lnkHvr = "color:cc0000;"; 

		return "<STYLE type=text/css> TD { font-family:tahoma,arial;font-size:6pt;font-weight:bold;font-variant:small-caps;letter-spacing:1px; } A { color:#ffffff;text-decoration:none; } A:hover { " +lnkHvr+ " } .bullet { " +oData.sBulletStyle+ " } </STYLE><table " +oData.appFooter+ " cellpadding=0 cellspacing=0 border=0><tr><td width=" +oData.appWidth+ " height=" +oData.footHeight+ " align=right>" +sPrintable+ "<font class=bullet>&#0149;</font>&nbsp;<a href=javascript:parent.emailThis();>e-mail this</a>&nbsp;&nbsp;<font class=bullet>&#0149;</font>&nbsp;<a href=\"mailto:multimedia@msnbc.com?subject=" +escape(oData.sTitle)+ " (" +oData.ID+ ");\">write us</a>&nbsp;&nbsp;" +sCredits+ "</td></tr></table>";
	} else {
		return oData.appFooter;	
	}
}

function emailThis() {
	location.href = "mailto:?subject="+escape(top.document.title)+"&body=%0D%0Ahttp://g.msn.com/0MNAU39/1%3F"+escape(location.href)+"%26%26CM%3DEmailThis%26CE%3D1%0D%0A_____________________________%0D%0A";
}

function getQuizCWDefaults(oData) {
	// CW quiz settings that overlap w/ other CW settings

	if (!oData.appBG) { oData.appBG = "|"; }
	if (typeof oData.appBG == "string") {
		if (oData.appBG.indexOf("|") > -1) { oData.appBG = oData.appBG.split("|"); }
		else { oData.appBG = new Array(oData.appBG,oData.appBG); }
	}
	if (!oData.appBG[0]) { oData.appBG[0] = " background=http://msnbcmedia.msn.com/i/msnbc/Components/ColorBoxes/Styles/ColorBoxImages(globalonlyplease)/component_dkgrey.gif"; }
	if (!oData.appBG[1]) { oData.appBG[1] = " bgcolor=FFFFFF"; }

	if (!oData.copyWidth) { oData.copyWidth = oData.appWidth; }
	oData.appLayout = (oData.copyWidth == oData.appWidth) ? 1 : 3; 

	if (oData.headHeight == null) { oData.headHeight = 40; }
	if (!oData.navHeight) { oData.navHeight = 0; }
	if (!oData.footHeight) {
		oData.footHeight = (oData.appFooter) ? 400 - oData.headHeight - oData.navHeight - oData.copyHeight : 0;
	}

	if (oData.appNavStyle == null) { oData.appNavStyle = 3; } 
	if (!oData.sAdprms) { oData.sAdprms = ""; }
	if (!oData.mainsectionID) { oData.mainsectionID = oData.navSectionID; }

}
