// debugging alert numbers used through # 2

var useConsurfColors = false;
var mouseover_no_isd_msg = " (No amino acids have insufficient data.)";

//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function makeConsurfHelpPrefix(helpname)
{
	if (match(helpname, "makeconsurfhelp") ||
		(!telAvivMode))
		return "";

	var concol = "";

	if (telAvivMode)
	{
		var ucc = "";
		if (useConsurfColors)
			ucc = " checked";

		if (controlPanel == "fg")
		{
			// ConSurf colors can be applied here
			if (match(helpname, "find") || match(helpname, "contacts") ||
				match(helpname, "hide") || match(helpname, "fgfromconsurf") ||
				match(helpname, "vine") || match(helpname, "slab") ||
				match(helpname, "zoom") || match(helpname, "catpisb"))
			{
				concol =
"<input type='checkbox' onClick='toggleConsurfColors()' " +
ucc + ">" + serverName + "&nbsp;Colors</a> ";
			}
			else // Gray out the ConSurf Colors checkbox
			{
				concol =
"<img src='unchecked.gif' \
title='" + serverName + " Colors Do Not Apply Here.' \
onClick='alert(\"" + serverName + " Colors Do Not Apply Here.\")'>\
<font color='#808080'>" + serverName + " Colors</font>";

				useConsurfColors = false;
			}
		}
	}

	var cshp = concol +
"&nbsp; &nbsp; &nbsp; \
<a href='javascript: showConsurfControls()' \
 title='Return to the " + serverName + " Controls'>" + serverName +
	"&nbsp;Controls</a>";

	return cshp;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function makeConsurfHelp()
{
	var csh = writeConsurfButtons();
	var server2 = "cs";
	if (pepsurfMode)
		server2 = "ps";
	else if (selectonMode)
		server2 = "st";
	else if (epitopiaMode)
		server2 = "ep";

	// ISD MODE GRAPHICS
	if (consurfMode || selectonMode)
	{
		if (consurf_grade_freqs_isd[0] > 0)
		{
			csh += 

"<center>*Click images below to change Insufficient Data display: \
<br>\
<a href='javascript: changeISDMode(\"isd\")'>\
<img src='consurf/isdmode.gif'></a> \
\
<a href='javascript: changeISDMode(\"dotssf\")'>\
<img src='consurf/dotssf.gif'></a> \
\
<a href='javascript: changeISDMode(\"dots\")'>\
<img src='consurf/dots.gif'></a> \
\
<a href='javascript: changeISDMode(\"sf\")'>\
<img src='consurf/sf.gif'></a>\
<br>\
Zoom larger to see dots more clearly. \
</center><br>";
		}
	}

	// LINK TO FGiJ
	var openbig = "<big>";
	var closebig = "</big>";
	if (pepsurfMode)
		openbig = closebig = "";

	csh += 
"<center>" + openbig + " \n\
<a href='javascript: showFGControls(\"fromConsurf\")' \
title='See Many Other Views of This Molecule'>\
Explore further in FirstGlance in Jmol.</a>\n\
<br>\n";

	if (!epitopiaMode)
		csh +=
"<a href='consurf/" + server2 + "_in_fg.htm' target=_blank \
title='What can FirstGlance \
add to a " + serverName + " result?'><big>Why?</big>\n";

	csh += closebig + "<br><br>\n";

	if (consurfMode)
		csh +=
			"<a href='consurf/runinfo.htm' target=_blank>";

	else if (selectonMode)
		csh +=
			"<a href='consurf/selinfo.htm' target=_blank>";

// Not implemented for epitopia
//	else if (epitopiaMode)
//		csh +=
//			"<a href='consurf/epiinfo.htm' target=_blank>";

	else // pepsurfMode
		csh +=
			"<a href='consurf/pepinfo.htm' target=_blank>";

	if (!epitopiaMode)
	{
		csh +=
serverName + "\n" +
"<b>Job Information</b></a>\n\
<br>\n";
	}

	if (consurfMode)
		csh +=
			"<a href='consurf/downldcs.htm' \n";
	else if (selectonMode)
		csh +=
			"<a href='consurf/downldst.htm' \n";
	else if (epitopiaMode)
		csh +=
			"<a href='consurf/downldep.htm' \n";
	else // pepsurfMode
		csh +=
			"<a href='consurf/downldps.htm' \n";

	csh +=
"target=_blank><b>Download</b> this " + serverName + " result to save it.</a> \n\
<br>\n";

	csh +=
"<a href='slides.htm' \n\
target=_blank>Include this molecular view in a <b>presentation</b>.</a> \n\
<br><br><br>\n\
<small>\n\
<a href='javascript: show_pipe_block()'>\n\
Show PDB file header (includes " + serverName + " scripts).</a>\n\
</small>\n\
</center>\n\
";

	return csh;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function makeFGFromConsurfHelp()
{
	var fgfc = 
"<big>FirstGlance in Jmol:</big>\n\
<br><br>\n\
Most of these molecular views use their own color schemes. \n\
<br>" + serverName + "\n\
colors will, however, be applied to \n\
<center> \n\
<b>Contacts.., Vines.., Hide..</b>, and <b>Find..</b> (above)\n\
<br>\n\
and to <b>Salt Bridges/Cation-Pi Interactions</b> \n\
<br>\n\
(accessed from <i>More Views..</i> above) \n\
</center> \n\
when the above <i>" + serverName + " Colors</i> checkbox is checked. \n\
\
<center><big>\n\
<br>\n";

	if (consurfMode)
		fgfc += 
"<a href='consurf/cs_in_fg.htm' target=_blank>\n";

	else if (selectonMode)
		fgfc += 
"<a href='consurf/st_in_fg.htm' target=_blank>\n";

//	else if (epitopiaMode)
//		fgfc += 
//"<a href='consurf/ep_in_fg.htm' target=_blank>\n";

	else // pepsurfMode
		fgfc += 
"<a href='consurf/ps_in_fg.htm' target=_blank>\n";
	
	if (!epitopiaMode)
	{
		fgfc += 
"What can be revealed here?</a>\n\
<br>~ ~ ~ ~ ~ ~<br>\n";
	}

	fgfc += 
"<a href='javascript: returnToIntro()'>Introduction to FirstGlance in Jmol</a>.\n\
</big></center>";

	return fgfc;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
function writeConsurfButtons() // wcb
{
	var cell_bgcolor = " bgcolor='black'";
	if (pepsurfMode)
		cell_bgcolor = "";

	// we are already within <center>

	// BEGIN FORM
	var cbuts = "<form name='cgrades'>\n"; // + makeKeymap();

/*
	// HI-RES IMAGE LINK
	if (consurfMode) // @@selectonMode? @@pepsurfMode?
	{
		cbuts +=
"<center><big><b><a href='consurf/hires.htm' target='_blank'>Make \
High-Resolution Image</a></b></big><hr noshade></center>";

//"<input type='button' value='Make Hi-Resolution Image' \
//onClick='makeHiResImage()'>";
	}
*/
	// BEGIN TABLE & ROW 1 = Background, Cartoon
	cbuts +=
//"<center><TABLE border=0 bgcolor='pink'><tr> \
"<center><TABLE border=0><tr> \
	<td colspan=3> \
		<center> \
		Click \
<input type='button' value='Backbone' \
onClick='consurfView(\"none\")'> \
or <input type='button' value='Cartoon' \
onClick='consurfView(\"cartoon\")'> \
<br> \
";

	if (consurfMode || selectonMode || epitopiaMode)
		cbuts +=
"then check colors below to spacefill residues:";
	else // pepsurfMode
		cbuts +=
"then check individual clusters below:";

	cbuts +=
"</center> \
</td></tr> \
";

	// BEGIN TABLE ROW 2
	cbuts += "<tr><td colspan='3'>";

//then click colors below to hide/show residues: \


	if (consurfMode || selectonMode || epitopiaMode)
	{
		// CONSURF CHECKABLE COLOR KEY
		cbuts += "<center>";

		if (epitopiaMode)
			cbuts += "<b>Immunogenicity Scale</b><br>";

		cbuts +=
"<table><tr><td " + cell_bgcolor + "> \
<center><table border=0 noshade height=35 cellpadding=2><tr>"
	+ make_ckey_cells() +
"</tr></table></center>" +
"</td></tr></table></center>" +
"</td></tr>";
	}

	if (consurfMode)
	{
		// CONSURF-ONLY ROW 3, 3-CELLS: Variable, Average, Conserved
		cbuts +=
"<tr> \
 \
<TD><b>Variable</b></TD> \
<TD align=right>Average</TD> \
<TD align=right><b>Conserved</b></TD> \
</TR> \
";
	}
	else if (selectonMode)
	{
		// SELECTON-ONLY ROW 3, 2-CELLS
		cbuts +=
"<tr> \
 \
<TD align=right><b>Positive</b></TD> \
<TD><center><img src='arrowl.gif'>&nbsp;<b>Selection</b>&nbsp;<img src='arrow.gif'></center></TD> \
<TD align=left><b>Purifying</b></TD> \
</TR> \
";
	}
	else if (epitopiaMode)
	{
		// EPITOPIA-ONLY ROW 3, 2-CELLS: Low <-- Average --> High
		cbuts +=
"<tr> \
 \
<TD><center><b>Low&nbsp;<img src='arrowl.gif'>&nbsp;Average&nbsp;<img src='arrow.gif'>&nbsp;High</b></center></TD> \
</TR> \
";

//<TD align=right><b>Low</b></TD> \
//<TD><center><img src='arrowl.gif'>&nbsp;<b>Immunogenicity</b>&nbsp;<img src='arrow.gif'></center></TD> \
//<TD align=left><b>High</b></TD> \

	}

	// PEPSURF CLUSTERS & PEPTIDES
	if (pepsurfMode)
	{
		if (pepsurf_alignment_count > 0)
		{
			var ck = "";
			if (pepsurf_alignment_shown == -1)
				ck = " checked";
			cbuts += "<tr><td colspan=3>\n" +
			"&nbsp; &nbsp;\n" +
			"<input type='radio' name='alignlabel' value='-1' \n" + 
			"onClick='toggle_pepsurf_show_alignment(-1)'" + ck + ">\n" +
			"Hide Alignments and Lists<br>\n";
		}

		var icc;
		for (icc = 1; icc <= pepsurf_cluster_count; icc++)
		{
			var ck = "";
			if (cssf_grade[icc]) // cluster showing?
			ck = " checked";

			if (icc > 1 && pepsurf_alignment_count > 0)
				cbuts += "<br>";

			var fclr = "<font color='#" + get_colorvalue("color_cluster" + icc) +
				"'>";

			cbuts += fclr +
				"<big><b>Cluster " + icc +
				"</b></font><input type='checkbox' name='cluster" + icc +
				"'" + ck + " onClick='ps_key(" + icc + ")' " +
				"title='Check to spacefill this cluster.'> " +

				"&nbsp; </b><a href='javascript: " +
				"center_cluster(" + icc + ")'>" + fclr +
				"Center & List</big></font></a><br>";

			cbuts += make_peptide_checklist(icc);
		}

		var revealMsg = "Reveal Sidechains Aligned to Peptide";

		if (pepsurf_alignment_count > 0)
		{
			if (pepsurf_alignment_shown == -1)
				cbuts += "<br>" +
				"<img src='unchecked.gif' onClick='alert(\"Select a peptide " +
				"to enable.\")' title='Select a peptide to enable.'>" +
				"<font color='#808080'> " + revealMsg +
				"</font>";
// THIS ANCHOR WORKS IN FF (WITH OR WITHOUT DUMMY) BUT FLICKERS IN IE6.
//			cbuts += "<br><a name='dummy' onClick='alert(\"Select a peptide to enable.\")'" +
//			"title='Select a peptide to enable.'>" +
// SPAN TITLE FLICKERS IN FF2 & IE6
//			cbuts += "<br><span onClick='alert(\"Select a peptide to enable.\")' " +
//			"title='Select a peptide to enable.'>" +
//			"<img src='unchecked.gif'><font color='#808080'> " + revealMsg +
//			"</font></span>";
			else
			{
				var rck = "";
				if (translucentMode)
					rck = " checked";
	
				cbuts +=
				"<br><input type='checkbox' onClick='toggle_translucent()' " +
				"name='togtrans'" + rck + ">" + revealMsg;
			}
		}
		else // Mapitope
		{
			cbuts += "&nbsp; &nbsp; <a href='javascript: hide_cluster_list()'>\n" +
				"Hide Cluster List</a>";
		}

		cbuts += "</b></big></td></tr>\n";
	} // end Pepsurf

	// CONSURF-ONLY ROW 4: INSUFFICIENT DATA CHECKBOX/HELP & DISPLAY #
	if (consurfMode || selectonMode)
	{
		if (top.consurf_grade_freqs_isd[0] > 0)
		{

		// SUB TABLE: TWO CELLS, ONE ROW (WITH SUB-SUB TABLE IN ONE CELL)
		cbuts +=
"<tr><td colspan=3> \n\
<table border=0 cellpadding=0 align='left'><tr><td bgcolor='black'>\
<table border=0 noshade height=35 cellpadding=3 align='left'><tr>"
 + make_ckey_cell(0) +
"</tr></table></td><td>";

		var hisdurl = "http://consurf.tau.ac.il/pe/protexpl/consurf/help_isd.htm";
		if (selectonMode)
			hisdurl = "URL_to_be_supplied.htm"; // @@STON

		var isddn = top.consurf_isd_mode_number;
		var isdvis = "Shown";
		if (top.consurf_isd_mode == "dots")
			isdvis = "<b>hidden</b>";

		else if (top.consurf_isd_mode == "sf")
			isdvis = "<b>hidden</b>";

		cbuts +=
"= <a href='" + hisdurl + "' \
target='helpisdwin'>Insufficient Data:</a> " + isdvis + " in \
Display <b>\
#" + isddn + "*</b></td></tr></table></td></tr> \
";

		}
	} // end Consurf/Selecton

//@@ep
	if (epitopiaMode) // No Grade and Ignored Chains checkboxes
	{
		cbuts +=
"<tr><td>\n\
<table border=0 cellpadding=0><tr><td>\n";

		// Make "not solvent exposed" checkbox.
		if (ep_not_solv_exp_count != 0) // -1 if undefined
		{
			cbuts +=
"<table border=0 cellpadding=0 align='left'><tr><td bgcolor='black'>\n\
<table border=0 noshade height=35 cellpadding=3 align='left'><tr>"
 + make_ckey_cell(6) +
"</tr></table></td></tr></table>\n\
Not Solvent<br>Exposed\n\
";

		}
		else // none not solvent exposed
			cbuts += "Not Solvent<br>Exposed: None";

		cbuts +=
"</td><td>&nbsp; &nbsp; &nbsp;</td><td>\n";

if (epitopia_ignored_chains.length > 0)
	cbuts +=
"<table border=0 cellpadding=0 align='left'><tr><td bgcolor='black'>\n\
<table border=0 noshade height=35 cellpadding=3 align='left'><tr>"
 + make_ckey_cell(7) +
"</tr></table></td></tr></table>\n\
Ignored Chains<br>("
+ epitopia_ignored_chains +
")";

else // no ignored chains
	cbuts += "Ignored Chains:<br>None";

cbuts += "</td></tr></table></td></tr>\n";
		
	}

	// BOTTOM ROW: Spacefill, Reset
	cbuts +=
"<tr><td colspan=3 align='right'><b><center> \
\
<input type='button' value='Spacefill' \
onClick='consurfView(\"all\")'> \
";

if (pepsurfMode)
	cbuts +=
"&nbsp; &nbsp; \
<input type='button' value='Spacefill All' \
onClick='consurfView(\"allall\")'> \
";

	cbuts +=
"&nbsp; &nbsp; \
<input type='button' value='Reset View' \
onclick='confirm_reset_consurf()'> \
</center></b> \
</td></tr> \
</table> \
 \
";

	// END OF TABLE (above)

//	alert("help_cs.js #2: Clist=" + Clist + " Ctot=" + Ctot);

	if (epitopiaMode)
	{
		if (Ctot == 1)
			cbuts += "There is only one chain in this model."
		else// if (Ctot <= top.ckboxmax) ALLOW ANY NUMBER OF CHAINS
		// MAKE CHAIN CHECKBOXES
		{
			cbuts += "Find Chain: ";
			
			cbuts +=
"<input type=\"radio\" name=\"radioFindChain\"\n\
 onClick=\"epitopiaChainClear()\" \
checked>None\n&nbsp;";

			for (var ci = 0; ci < Ctot; ci++)
			{
				cbuts += 
"<input type=\"radio\" name=\"radioFindChain\"\n\
 onClick=\"epitopiaChainFind(" + ci + ", this.checked)\" \
>" + Clist.charAt(ci) + " &nbsp;";

			}
		} // make chain checkboxes

	} // epitopiaMode

	if (identical_chains_reported)
	{
		if (Ctot == 1)
		{
			cbuts +=
"(Chain " + Clist.charAt(0) + " is unique in this \
<a href='http://proteinexplorer.org/igloss.htm#pdb' target='igwin'>\
<font color='#00b000'><b>PDB file</b></font></a>.) \
";
		}

		else if ((consurfMode || selectonMode) && Ctot <= top.ckboxmax)
// pepsurf would require changing :X chains in select scripts
// || (pepsurfMode && Ctot <= top.ckboxmax && pepsurf_chains.length == 1))
	// INDIVIDUAL CHAIN CHECKBOXES
		{
			cbuts += "Act on identical chains ";

			for (var ci = 0; ci < Ctot; ci++)
			{
				cbuts += Clist.charAt(ci) +
"<input type=\"checkbox\" name=\"" + chainCheckboxPrefix +
	Clist.charAt(ci) + "\" \
onClick=\"reset_to_mode(false)\" \
";
				if (top.consurf_chain_checkbox[ci])
					cbuts += "checked";
				cbuts += ">";
			}
		}
		else if (consurfMode || selectonMode)// Ctot > top.ckboxmax
		// ONE CHECKBOX FOR ALL
		{
			cbuts +=
"<input type=\"checkbox\" name=\"id_chains\" \
onClick=\"reset_to_mode(false)\" \
";
			if (top.consurf_chain_checkbox[0])
				cbuts += "checked";
			cbuts += ">Act on all " + Ctot + " identical chains.";
		}
		else if (pepsurfMode)
		{
			cbuts += "Sequence-identical chains: " + Clist + ".";
		}
	}

//<br>
//	<!-- ConSurf-Seq3D -->
//	<a href="javascript: show_custom_sequences('c')">
//	<b>Clickable ConSurf-Colored Sequence 3D</b></a>

	cbuts += "\n</center></form>";

//	alert("help_cs.js #1: cbuts:\n" + cbuts);

	return cbuts;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/*
function makeKeymap()
{
	return ""; // for table alternative, no keymap

	var kmap = "<map name='keymap'>\n" +

	make_area('  0,0,  33,25', 1) +
	make_area(' 34,0,  67,25', 2) +
	make_area(' 68,0, 100,25', 3) +
	make_area('101,0, 133,25', 4) +
	make_area('134,0, 167,25', 5) +
	make_area('168,0, 200,25', 6) +
	make_area('201,0, 233,25', 7) +
	make_area('234,0, 267,25', 8) +
	make_area('267,0, 300,25', 9) +

	"</map>\n";

	return kmap;
}
*/
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/*
function make_area(coords, gradenum)
{
	var perc = "";
	if (Ctot > 1)
		perc = " per chain";

	var msg = grade_freqs[gradenum] + " amino acids" +
		perc + " at conservation grade " + gradenum + ".";
	if (top.consurf_grade_freqs_isd[0] == 0)
		msg += mouseover_no_isd_msg;
	// if AA is spelled out, msg too long for Firefox if count >=10
	if (top.consurf_isd_mode != "isd")
		msg += " (Count includes AA with insufficient data.)";

	var mapa =
"<area shape=\"rect\" coords=\" " + coords +
"\" href=\"javascript: cs_key(" + gradenum + ")\" " +

	// write same message twice, both for N4 (alt=) and Gecko (title=)
	// IE uses either.

" alt=\"" + msg + "\" title=\"" + msg + "\">\n";

	return mapa;
}
*/
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function make_ckey_cells()
{
	var ccs = "";
	for (var i = 1; i <= maxGrades; i++)
		ccs += make_ckey_cell(i);
	return ccs;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function make_ckey_cell(grade)
{
	var atgrade = " at conservation grade ";
	if (epitopiaMode)
		atgrade = " at immunogenicity level ";

	var cv = get_colorvalue("color_grade" + grade);

	var perc = "";
	if (Ctot > 1 && !epitopiaMode)
		perc = " per chain";

	// MAKE TOOLTIP TITLE
	var ttl;
	if (grade == 0)
		ttl = top.consurf_grade_freqs_isd[0] +
			" amino acids with insufficient data.";
	else
	{
		ttl = "";

		if (!epitopiaMode || grade < 6)
		{
			ttl = grade_freqs[grade] + " amino acids" +
			perc + atgrade + grade + ".";

			if (!epitopiaMode)
			{
				if (top.consurf_grade_freqs_isd[0] == 0)
					ttl += mouseover_no_isd_msg;

				// if AA is spelled out, msg too long for Firefox if count >=10
				if (top.consurf_isd_mode != "isd")
					ttl += " (Count includes AA with insufficient data.)";
			}
		}

		else // epitopiaMode
		{
			if (grade == 6 && ep_not_solv_exp_count > 0) // -1 when undefined
				ttl = ep_not_solv_exp_count +
					" amino acids are not solvent exposed.";

			if (grade == 7 && ep_non_sel_chains_aa_count > 0) // -1 when undefined
				ttl = ep_non_sel_chains_aa_count +
					" amino acids in ignored chains.";
		}
	}

	var ck = "";
	if (cssf_grade[grade])
		ck = " checked";

	var cellLabel = grade;
	if (epitopiaMode && grade > 5)
		cellLabel = "";

	var cc =
"<td bgcolor='#" + cv + "' title='" + ttl + "'><input type='checkbox' " +
"name='g" + grade + "'" + ck + " onClick='cs_key(" + grade +
")'><b>" + cellLabel + "</b></td>";

	return cc;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

