//Notes:
//output treats stuff between "<...>" as tags...must have space to
//tell JSCript it's not a tag.
function display() {
	clearOut();
	writelnOut("<CENTER>");
	writelnOut("<B>Set Information</B>");
	writelnOut("<TABLE CELLSPACING=1 CELLPADDING=2>");
	for (var i = -1; i < master.length; i++) {
		writelnOut("<TR>");
		if (i != -1)
			TH("Set&nbsp;#" + i);
		else
			TH(" ");
		//show original set?
		if (true) {
			if (i == -1) {
				TH("Original<BR>Set");
			} else {
				TD("< " + master[i][SET] + " >");
			}
		}
		//show ordered form?
		if (SHOW_VERBOSE) {
			if (i == -1) {
				TH("Ascending<BR>Order");
			} else {
				TD("< " + master[i][ORDERED] + " >");
			}
		}
		//show minspan form?
		if (SHOW_VERBOSE) {
			if (i == -1) {
				TH("Minimum<BR>Span");
			} else {
				TD("< " + master[i][MINSPAN] + " >");
			}
		}				
		//prime form?
		if (SHOW_PRIME) {
			if (i == -1) {
				TH("Prime<BR>Form");
			} else {
				TD("< " + master[i][PRIME] + " >");
			}
		}
		//Forte name?
		if (SHOW_FORTE) {
			if (i == -1) {
				TH("Forte<BR>Name");
			} else {
				TD("< " + master[i][FORTE] + " >");
			}
		}
		writelnOut("</TR>");
	}
	writelnOut("</TABLE><BR>");
	
	
	
	//Transposition/Inversion
	if (SHOW_TRANS) {
	writelnOut("<B>Transposition and Inversion</B>");
		writelnOut("<TABLE CELLPADDING=1 CELLSPACING=1>");
		for (var i = -1; i < master.length; i++) {
			writelnOut("<TR>");
			if (i != -1)
				TH("Set&nbsp;#" + i);
			else
				TH(" ");			
			for (var j = 0; j < master.length; j++) {
				//Transposition?
				if (true) {
					if (i == -1) {
						TH("Set&nbsp;#" + j);
					} else {
						if (master[i][REAL_TRANS][j] == -1) {
							if (master[i][REAL_INV][j] == -1) {
								TD("--");
							}
							else {
								TD("I" + master[i][REAL_INV][j]);
							}
						}
						else {
							if (master[i][REAL_TRANS] == 0) {
								if (master[i][REAL_INV] != -1)
									TD("I" + master[i][REAL_INV][j]);
								else
									TD("T" + master[i][REAL_TRANS][j]);
							} else {
								TD("T" + master[i][REAL_TRANS][j]);
							}
						}
					}
				}		
			}	
			writelnOut("</TR>");
		}
		writelnOut("</TABLE><BR>");
	}

	//Retrograde/Retrograde Inverion
	if (SHOW_RETRO) {
		writelnOut("<B>Retrograde and Retrograde Inversion</B>");
		writelnOut("<TABLE CELLSPACING=1 CELLPADDING=1>");
		for (var i = -1; i < master.length; i++) {
			writelnOut("<TR>");
			if (i != -1)
				TH("Set&nbsp;#" + i);
			else
				TH(" ");			
			for (var j = 0; j < master.length; j++) {
				if (i == -1) {
					TH("Set&nbsp;#" + j);
				} else {
					if (master[i][REAL_RETRO][j] == -1) {
						if (master[i][REAL_RETRO_INV][j] == -1) {
							TD("--");
						}
						else {
							TD("RI" + master[i][REAL_RETRO_INV][j]);
						}
					}
					else
						TD("R" + master[i][REAL_RETRO][j]);
				}
			}	
			writelnOut("</TR>");
		}
		writelnOut("</TABLE><BR>");
	}

	//Near Equivalencies
	if (SHOW_EQUIV) {
		var cell = "";
		writelnOut("<B>Real and Abstract Near Equivalence</B>");
		writelnOut("<TABLE CELLSPACING=1 CELLPADDING=1>");
		for (var i = -1; i < master.length; i++) {
			writelnOut("<TR>");
			if (i != -1)
				TH("Set&nbsp;#" + i);
			else
				TH(" ");			
			for (var j = 0; j < master.length; j++) {
				if (i == -1) {
					TH("Set&nbsp;#" + j);
				} else {
					if (master[i][REAL_NEAR_EQUIV][j]) {
						cell += "R";
					}
					if (master[i][ABS_NEAR_EQUIV][j]) {
						cell += "A";
					}
					if (cell != "")
						TD(cell);
					else
						TD("--");
					cell = "";
				}
			}	
			writelnOut("</TR>");
		}
		writelnOut("</TABLE><BR>");
	}


	var sourceCode = outputBuffer;
	writelnOut('<A HREF="\#" onClick="toggleDisplay(\'sourceCode\');return false;">Toggle Source Code Display</A><P>');
	writelnOut('<DIV ID="sourceCode" CLASS="FAQbody"><CODE>' + sourceCode + '</CODE></DIV>');



	writelnOut("</CENTER>");				


	commitOut();
}

function TD(string) {
	writelnOut("<TD>" + string + "</TD>");
}

function TH(string) {
	writelnOut("<TH>" + string + "</TH>");
}