//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
var nonChainSelectAlerted = false;
var nonChainHideAlerted = false;


function jmolPickCallback(p1, pTwo, p3, p4)
{
//	alert("pickcall.js #3: entering jmolPickCallback()\n" +
//		p1 + "\n" + p2 + "\n" + p3 + "\n" + p4);

//	alert("pickcall.js #3a: jmolPickCallback() reports:\n" +
//		p1 + "\n" + pTwo);

// p1 = jmolApplet0
// p2 = [HIS]53:A.CA #1141 or [CD]41.CD #1714 (no chain)
// p3 = integer close atom number, but not it ??!!
// p4 = undefined

//	if (toggleIsDown[slabIndex])
//	{
//		top.scriptToJmol(makeEchoSpt("Sorry, can't identify with Slab on."));
//		return;
//	}

	var p2 = "" + pTwo; // for Safari

	var iclosebracket = p2.indexOf("]");
	var icolon = p2.indexOf(":");
	var idot = p2.indexOf(".");
	var ipound = p2.indexOf("#");
	var ispace = p2.indexOf(" ");
	var iatomend = ispace;
	if (ispace == -1)
		iatomend = ipound;
	var ichainend = icolon;
	if (icolon == -1)
		ichainend = idot;

//	alert("moldoc.js #6: p2=" + p2 + "\n" + "iclosebracket=" + iclosebracket);

	var cchain, cgroup3, cgroupfull, catom, atomid, catomserial;	
	var seqnum;

//	if (iclosebracket == -1 || idot == -1 || ipound == -1)
//			return;

	// GROUP
	cgroup3 = p2.substring(1, iclosebracket); // [GRP] -> GRP
	atomid = cgroup3;
	cgroupfull = p2.substring(0, idot);
	//alert(cgroupfull);

	// SEQUENCE NUMBER
	seqnum = p2.substring(iclosebracket + 1, ichainend);
	atomid += " " + seqnum;

	// CHAIN (may be absent)
	if (icolon != -1)
	{
		cchain = p2.substring(icolon + 1, icolon + 2);
		atomid += " Chain=" + cchain;
	}
	else
		cchain = "";

	// ATOM (should be Element, but can't get it easily)
	// and MODEL
	var atomString = p2.substring(idot + 1, iatomend);
	var islash = atomString.indexOf("/");
	var modelString = "";
	if (islash != -1)
	{
		// must be before atomString is trimmed!
		modelString = atomString.substring(islash + 1);
		atomString = atomString.substring(0, islash);
	}
	atomid += " Atom=" + atomString;

	if (atomString == "CA" && cgroup3 != "CA") // not calcium
		atomid += " (Carbon Alpha, 1st)";
	else if (atomString.substring(0, 2) == "HA")
		atomid += " (H on Alpha carbon)";
	else if (atomString == "C" || atomString == "O" || atomString == "N")
		atomid += " (main chain)";
	else if (atomString == "H")
		atomid += " (H on main chain nitrogen)";
	else if (atomString == "CB")
		atomid += " (Carbon Beta, 2nd)";
	else if (atomString.substring(0, 2) == "HB")
		atomid += " (Hydrogen Beta, 2nd)";
	else if (atomString.substring(0, 2) == "CG")
		atomid += " (Carbon Gamma, 3rd)";
	else if (atomString.substring(0, 2) == "OG")
		atomid += " (Oxygen Gamma, 3rd)";
	else if (atomString.substring(0, 2) == "SG") // cys; ignore Sb seaborgium #106
		atomid += " (Sulfur Gamma, 3rd)";
	else if (atomString.substring(0, 2) == "HG" && cgroup3 != "HG") // not mercury
		atomid += " (Hydrogen Gamma, 3rd)";
	else if (atomString.substring(0, 2) == "OD")
		atomid += " (Oxygen Delta, 4th)";
	else if (atomString.substring(0, 2) == "SD") // met
		atomid += " (Sulfur Delta, 4th)";
	else if (atomString.substring(0, 2) == "CD" && cgroup3 != "CD") // not cadmium
		atomid += " (Carbon Delta, 4th)";
	else if (atomString.substring(0, 2) == "ND" && cgroup3 != "ND") // histidine, not neodynium
		atomid += " (Nitrogen Delta, 4th)";
	else if (atomString.substring(0, 2) == "HD")
		atomid += " (Hydrogen Delta, 4th)";
	else if (atomString.substring(1, 2) == "E" && cgroup3 != "CE") // CE=lysine
		atomid += " (Epsilon, 5th)";
	else if (atomString.substring(1, 2) == "Z") // CZ=arginine, NZ=lysine
		atomid += " (Zeta, 6th)";
	else if (atomString.substring(0, 2) == "CH") // tryptophan
		atomid += " (Carbon H=eta, 7th)";
	else if (atomString.substring(0, 2) == "NH")
		atomid += " (Nitrogen H=eta, 7th)";
	else if (atomString.substring(0, 2) == "OH") // tyrosine
		atomid += " (Oxygen H=eta, 7th)";
	else if (atomString.substring(0, 2) == "HH")
		atomid += " (Hydrogen H=eta, 7th)";

	if (modelString != "")
		atomid += " Model=" + modelString;

	catomserial = p2.substring(ipound + 1);

	// HIDE MOIETIES?

//	var hideClickedSpt = "";
	if (hideMode == "c")
	{
		if (cchain != "")
		{
			var nonStdResChain = false;

			// IF THE RESIDUE IS NONSTANDARD, DON'T HIDE A CHAIN.
			// EXAMPLE: HEM HAS A CHAIN NAME IN 2HHD.
			if (!isStdAA(cgroup3) && !isStdNucleotide(cgroup3))
				nonStdResChain = true;
			else // standard residue with chain name
			{
				// nonstandard residues or ligand in a chain remain visible.
				// Don't increment the hidden chain count if they are clicked.
				var alreadyHidden = false;
				var ih;
				for (ih = 0; ih < top.hiddenChains.length; ih++)
					if (("" + top.hiddenChains[ih]) == cchain)
						alreadyHidden = true;

				if (!alreadyHidden)
				{
//				hideClickedSpt += "restrict not (:" + cchain + " and not hetero);\n";
					atomid = "Chain " + cchain + " Hidden";
					top.hiddenChains[top.hiddenChains.length] = cchain;
				}
			}
		}

		// NO CHAIN, OR NON-STANDARD RESIDUE WITH CHAIN NAME
		if (cchain == "" || nonStdResChain)
		{
			// HIDE UNNAMED CHAINS IF STD RESIDUE CLICKED
			// UNNAMED PROTEIN CHAIN
			if (isStdAA(cgroup3))
			{
				if (hiddenChains.length == 0)
				{
					atomid += "; Protein Hidden";
					hiddenChains[0] = "Protein";
				}
				else
				{
					atomid += "; Protein Re-Displayed";
					hiddenChains.length = 0;
				}
			}
			else if (isStdNucleotide(cgroup3))
			{
				if (hiddenChains.length == 0)
				{
					atomid += "; Nucleic Acid Hidden";
					hiddenChains[0] = "Nucleic";
				}
				else
				{
					atomid += "; Nucleic Acid Re-Displayed";
					hiddenChains.length = 0;
				}
			}

			// ALERT IF CLICK NON-STD RESIDUE, OR NON-CHAIN
			else //if (cchain == "") // && !nonChainHideAlerted)
			{
				alert(
					"To hide this, please change radio button\n" +
					"at left to Residues/Groups or Atoms,\n" +
					"then click again.");
				nonChainHideAlerted = true;
			}
		}
	}
	if (hideMode == "g")
	{
		var alreadyHiddenGroup = false;
		var ih, iht;
		for (ih = 0; ih < top.hiddenGroups.length; ih++)
		{
			if (("" + top.hiddenGroups[ih]) == cgroupfull) 
			{
				alreadyHiddenGroup = true;
				atomid = "Group Already Hidden - Please Click Elsewhere";
			}
		}

		if (!alreadyHiddenGroup)
		{
			atomid = "Residue/Group " + cgroupfull + " Hidden";
			top.hiddenGroups[top.hiddenGroups.length] = cgroupfull;
		}
	}
	if (hideMode == "a")
	{
		// BUILD ATOMID
		atomid = "Atom=" + atomString + " (in " + cgroup3 + " " + seqnum;
		if (cchain != "")
			atomid += " Chain=" + cchain;
		// you can hide an atom per model in the all models display
		if (modelString != "")
			atomid += " Model=" + modelString;
		atomid += ")";

		// IS IT ALREADY HIDDEN? (can still be clickable in smoothed traces)
		var alreadyHiddenAtom = false;
		var ih, iht;
		for (ih = 0; ih < top.hiddenAtoms.length; ih++)
		{
			var sas = firstWord(top.hiddenAtoms[ih]);
			if (sas == catomserial) // works in Gecko, Safari
				alreadyHiddenAtom = true;
		}

		if (!alreadyHiddenAtom) // SAVE atomid!
		{
			top.hiddenAtoms[top.hiddenAtoms.length] = catomserial + " " + atomid;
			atomid += " Hidden";
		}
		else // already hidden, now can replace atomid
			atomid = "Atom Already Hidden - Please Click Elsewhere";
	}

	// HIDE RANGE: IF THE CHAIN HAS A NAME, format is "11-48:A".
	// IF THE CHAIN IS UNNAMED, format is "11-48 and protein" or "11-48 and nucleic"
	// hiddenRangeStart (format "11 and protein" or "11 and nucleic")
	//   records the first click of a range. Otherwise it is blank.
	// hiddenRanges[] records hidden ranges,
	//   after they are completed with a valid second click.
	if (hideMode == "r") // RANGE
	{
		if (cchain == "" && !isStdAA(cgroup3) && !isStdNucleotide(cgroup3))
		{
				alert("What you clicked on appears not\n" +
					"to be a member of a chain. Please\n" +
					"click on a standard residue in a chain.");
		}
		else // cchain != "" || isStdAA(cgroup3) || isStdNucleotide(cgroup3)
		{
			var chainType = " and protein";
			if (isStdNucleotide(cgroup3))
				chainType = " and nucleic";

			// START A NEW RANGE
			if (hiddenRangeStart == "")
			{
				if (cchain == "") // single unnamed chain
					// format "11 and protein|nucleic"
					hiddenRangeStart = seqnum + chainType;
				else
					hiddenRangeStart = seqnum + ":" + cchain; // format "11:A"
				atomid = "Range Started at " + hiddenRangeStart;
			}
			else // COMPLETE THE RANGE THAT WAS STARTED ON THE PREVIOUS CLICK.
			{
				// CHECK FOR CHAIN MISMATCH
				var chainMismatch = false;

				// SAME CHAIN NAME?
				if (cchain != "")
				{
					var startchain = 
						hiddenRangeStart.substring(hiddenRangeStart.indexOf(":") + 1);
					if (startchain != cchain)
					{
						alert("The range starts in chain " + startchain +
							"\n but your second click was on chain " + cchain +
							".\n A range must begin and end in the same chain.\n" +
							"Please try the second click again, or Cancel.");
						chainMismatch = true;
					}
				}
				else // BLANK CHAIN: both protein or nucleic?
				{
					// startType format " and protein"
					var startType =
						hiddenRangeStart.substring(hiddenRangeStart.indexOf(" "));
					if (startType != chainType)
					{
						var mmm = "The range starts in " +
						(startType == "p"? "protein":"nucleic acid") +
						"\n but your second click was on "
						(chainType == "p"? "protein":"nucleic acid") +
						".\n Please try the second click again, or Cancel.";
						chainMismatch = true;
					}
				}
					
				// CHAINS MATCH, SO OK TO COMPLETE THE RECORDED RANGE.
				if (!chainMismatch)
				{
					var startnum;
					if (cchain == "") // Start format "11 and protein"
						startnum =
							hiddenRangeStart.substring(0, hiddenRangeStart.indexOf(" "));
					else // Start format "11:A"
						startnum = 
							hiddenRangeStart.substring(0, hiddenRangeStart.indexOf(":"));
		
					if (startnum == seqnum)
						alert("You clicked on sequence number " + seqnum + " twice."
							+ "\n A range must start and end at different numbers."
							+ "\n Please try the second click again, or Cancel.");
					else
					{
						if (cchain == "")
						{
							hiddenRanges[hiddenRanges.length] =
								startnum + "-" + seqnum + chainType;
						}
						else
						{
							hiddenRanges[hiddenRanges.length] =
								startnum + "-" + seqnum + ":" + cchain;
						}
						hiddenRangeStart = "";
//							alert("moldoc.js #5: added range\n" +
//								hiddenRanges[hiddenRanges.length - 1]);

						atomid = "Range " + 
							hiddenRanges[hiddenRanges.length - 1] +
							" Hidden";

					} // !chainMismatch
				} // chain finished
			} // start or finish range
		} // cchain blank?
	} // (hideMode == "r")

	// This is to workaround a bug in Jmol 10.00.48.
	// It should be fixed in a future Jmol release.
//	if (hideClickedSpt.length > 0)
//		hideClickedSpt = "set bondmode or;\n" + hideClickedSpt;

	// END HIDING
//= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 

	// SELECT TARGET FOR CONTACTS?
	if (selectMode == "c") // cchain = clicked chain
	{
		var nonStdResChain = false;
		if (cchain != "")
		{
			// IF THE RESIDUE IS NONSTANDARD, DON'T SELECT A CHAIN.
			// EXAMPLE: HEM HAS A CHAIN NAME IN 2HHD.
			if (!isStdAA(cgroup3) && !isStdNucleotide(cgroup3))
				nonStdResChain = true;
			else
			{
				atomid = "Chain " + cchain;

				var alreadySelected = false;
				var ih, iht;
				// IS CHAIN ALREADY SELECTED?
				for (ih = 0; ih < top.selectedChains.length; ih++)
				{
//alert(selectedChains[ih] + " " + selectedChains[ih].length + "\n" + cchain + " " + cchain.length);
//alert("|" + selectedChains[ih] + "|\n|" + cchain + "|");

					if (("" + top.selectedChains[ih]) == cchain) // otherwise fails in Gecko, Safari
					{
						alreadySelected = true;
						// toggle selection off for this chain
						// move higher chains down to replace current slot
						for (iht = ih + 1; iht < top.selectedChains.length; iht++)
							top.selectedChains[iht - 1] = top.selectedChains[iht];
						top.selectedChains.length--;
						atomid += " Deselected";
					}
				}

				// ADD THIS CHAIN TO SELECTED ARRAY
				if (!alreadySelected)
				{
					atomid += " Selected";
					top.selectedChains[top.selectedChains.length] = cchain;
				}
			} // end standard residue in chain
		} // end non-blank chain name

		// NO CHAIN, OR NON-STANDARD RESIDUE WITH CHAIN NAME
		if (cchain == "" || nonStdResChain)
		{
			// SELECT UNNAMED CHAINS IF STD RESIDUE CLICKED
			// UNNAMED PROTEIN CHAIN
			if (isStdAA(cgroup3))
			{
				if (selectedChains.length == 0)
				{
					atomid += "; Protein Selected";
					selectedChains[0] = "Protein";
				}
				else
				{
					atomid += "; Protein Deselected";
					selectedChains.length = 0;
				}
			}
			// UNNAMED NUCLEIC ACID CHAIN
			else if (isStdNucleotide(cgroup3))
			{
				if (selectedChains.length == 0)
				{
					atomid += "; Nucleic Acid Selected";
					selectedChains[0] = "Nucleic";
				}
				else
				{
					atomid += "; Nucleic Acid Deselected";
					selectedChains.length = 0;
				}
			}

			// ALERT IF CLICK NON-STD RESIDUE, OR NON-CHAIN
			else //if (!nonChainSelectAlerted)
			{
				alert(
					"To select " + cgroup3 +", please change radio button\n" +
					"at left to Residues/Groups or Atoms,\n" +
					"then click again.");
				nonChainSelectAlerted = true;
			}
		}
	} // end select mode == chain

	if (selectMode == "g")
	{
		atomid = "Residue/Group " + cgroupfull;

		var alreadySelected = false;
		var ih, iht;
		for (ih = 0; ih < top.selectedGroups.length; ih++)
		{
			if (("" + top.selectedGroups[ih]) == cgroupfull) 
			{
				alreadySelected = true;
				// toggle selection off
				// move higher items down to replace current slot
				for (iht = ih + 1; iht < top.selectedGroups.length; iht++)
					top.selectedGroups[iht - 1] = top.selectedGroups[iht];
				top.selectedGroups.length--;
				atomid += " Deselected";
			}
		}

		if (!alreadySelected)
		{
			atomid += " Selected";
			top.selectedGroups[top.selectedGroups.length] = cgroupfull;
		}
	}
	if (selectMode == "a")
	{
//		atomid = "Atom Serial #" + catomserial;

		atomid = "Atom=" + atomString + " (in " + cgroup3 + " " + seqnum;
		if (cchain != "")
			atomid += " Chain=" + cchain;
		// you can hide an atom per model in the all models display
		if (modelString != "")
			atomid += " Model=" + modelString;
		atomid += ")";

		var alreadySelected = false;
		var ih, iht;
		for (ih = 0; ih < top.selectedAtoms.length; ih++)
		{
			var sas = firstWord(top.selectedAtoms[ih]);
			if (sas == catomserial) // works in Gecko, Safari
			{
				alreadySelected = true;
				// toggle selection off
				// move higher items down to replace current slot
				for (iht = ih + 1; iht < top.selectedAtoms.length; iht++)
					top.selectedAtoms[iht - 1] = top.selectedAtoms[iht];
				top.selectedAtoms.length--;
				atomid += " Deselected";
			}
		}

		if (!alreadySelected)
		{
			top.selectedAtoms[top.selectedAtoms.length] = catomserial +
				" " + atomid;
			atomid += " Selected";
		}
	}
	// RANGE: IF THE CHAIN HAS A NAME, format is "11-48:A".
	// IF THE CHAIN IS UNNAMED, format is "11-48 and protein" or "11-48 and nucleic"
	// selectedRangeStart (format "11 and protein" or "11 and nucleic")
	//   records the first click of a range. Otherwise it is blank.
	// selectedRanges[] records selected ranges,
	//   after they are completed with a valid second click.
	if (selectMode == "r") // RANGE
	{
		if (cchain == "" && !isStdAA(cgroup3) && !isStdNucleotide(cgroup3))
		{
				alert("What you clicked on appears not\n" +
					"to be a member of a chain. Please\n" +
					"click on a standard residue in a chain.");
		}
		else // cchain != "" || isStdAA(cgroup3) || isStdNucleotide(cgroup3)
		{
			var chainType = " and protein";
			if (isStdNucleotide(cgroup3))
				chainType = " and nucleic";

			// DETECT A CLICK WITHIN AN ALREADY RECORDED RANGE TO DESELECT IT
			var alreadyRanged = false;
			var alreadyRangedIndex;
			var ir;
			for (ir = 0; ir < selectedRanges.length; ir++)
			{
				// EXTRACT r1 (startNumber), r2 (endNumber), and rc (chain name)
				// from each already-recorded range, in order to detect if the
				// current click is within an already-recorded range.

				var rr = selectedRanges[ir];
				var r1 = rr.substring(0, rr.indexOf("-"));
				if (cchain == "")
					var r2 = rr.substring(rr.indexOf("-") + 1, rr.indexOf(" "));
				else
					var r2 = rr.substring(rr.indexOf("-") + 1, rr.indexOf(":"));
				if (cchain != "") // get chain name
					var rc = rr.substring(rr.indexOf(":") + 1);

//				alert("moldoc.js #4 r1=" + r1 + " r2=" + r2 + " rc=" + rc);

				var rn1 = parseInt(r1);
				var rn2 = parseInt(r2);
				// put in numeric order
				if (rn1 > rn2) // order reversed
				{
					var rtmp = rn1;
					rn1 = rn2;
					rn2 = rtmp;
				}
//				alert("moldoc.js #4a rn1=" + rn1 + " rn2=" + rn2);

				var nclicked = parseInt(seqnum);
//				alert("moldoc.js #4b rc=" + rc + " cchain=" + cchain
//					+ " nclicked=" + nclicked);

				// If the clicked residue is in the same chain as the current
				// already-selected range, then ...
				if (rc == cchain || cchain == "")
				{
					// ... check to see if the clicked residue number is within the
					// already selected range.
					if (nclicked >= rn1 && nclicked <= rn2)
					{
						alreadyRanged = true;
						alreadyRangedIndex = ir;
					}
				}
			} // End of loop to detect whether the current click is within an
			// already-selected range.

			if (alreadyRanged) // Deselect it.
			{
				atomid = "Range " + selectedRanges[alreadyRangedIndex] + " Deselected";
				for (ir = alreadyRangedIndex; (ir + 1) < selectedRanges.length; ir++)
				{
					selectedRanges[ir] = selectedRanges[ir + 1];
				}
				selectedRanges.length--;
			}

			else // NEW RANGE, RECORD IT.
			{
				// START A NEW RANGE
				if (selectedRangeStart == "")
				{
					if (cchain == "") // single unnamed chain
						// format "11 and protein|nucleic"
						selectedRangeStart = seqnum + chainType;
					else
						selectedRangeStart = seqnum + ":" + cchain; // format "11:A"
					atomid = "Range Started at " + selectedRangeStart;
				}
				else // COMPLETE THE RANGE THAT WAS STARTED ON THE PREVIOUS CLICK.
				{
					// CHECK FOR CHAIN MISMATCH
					var chainMismatch = false;

					// SAME CHAIN NAME?
					if (cchain != "")
					{
						var startchain = 
							selectedRangeStart.substring(selectedRangeStart.indexOf(":") + 1);
						if (startchain != cchain)
						{
							alert("The range starts in chain " + startchain +
								"\n but your second click was on chain " + cchain +
								".\n A range must begin and end in the same chain.\n" +
								"Please try the second click again, or Cancel.");
							chainMismatch = true;
						}
					}
					else // BLANK CHAIN: both protein or nucleic?
					{
						// startType format " and protein"
						var startType =
							selectedRangeStart.substring(selectedRangeStart.indexOf(" "));
						if (startType != chainType)
						{
							var mmm = "The range starts in " +
							(startType == "p"? "protein":"nucleic acid") +
							"\n but your second click was on "
							(chainType == "p"? "protein":"nucleic acid") +
							".\n Please try the second click again, or Cancel.";
							chainMismatch = true;
						}
					}
					
					// CHAINS MATCH, SO OK TO COMPLETE THE RECORDED RANGE.
					if (!chainMismatch)
					{
						var startnum;
						if (cchain == "") // Start format "11 and protein"
							startnum =
								selectedRangeStart.substring(0, selectedRangeStart.indexOf(" "));
						else // Start format "11:A"
							startnum = 
								selectedRangeStart.substring(0, selectedRangeStart.indexOf(":"));
		
						if (startnum == seqnum)
							alert("You clicked on sequence number " + seqnum + " twice."
								+ "\n A range must start and end at different numbers."
								+ "\n Please try the second click again, or Cancel.");
						else
						{
							if (cchain == "")
							{
								selectedRanges[selectedRanges.length] =
									startnum + "-" + seqnum + chainType;
							}
							else
							{
								selectedRanges[selectedRanges.length] =
									startnum + "-" + seqnum + ":" + cchain;
							}
							selectedRangeStart = "";
//							alert("moldoc.js #5: added range\n" +
//								selectedRanges[selectedRanges.length - 1]);

							atomid = "Range " + 
								selectedRanges[selectedRanges.length - 1] +
								" Selected";
						}
					} // chain finished
				} // start or finish range
			} // not alreadyRanged
		} // cchain blank?
	} // (selectMode == "r")

	// CONSTRUCT SCRIPT COMPONENTS
	// I. echo atom id to jmol 

	var echoId = makeEchoSpt(atomid);
//	alert("moldoc.js #2 echoId=\n" + echoId);

	// II. define ~hidden_jdef, e.g. for centerVisible()	
	var hiddenCurrentSpt = "";
	if (hideMode != "")
		hiddenCurrentSpt = makeDefineHiddenSpt();

	// III. define ~targ_current
	var targCurrentSpt = makeSelectSpt(); // need to define ~targ_current

	if (contactsShowing)
		targCurrentSpt =
			"select ~targ_current;\n" + // ~targ_current already defined
			makeMarkSelectedSpt("*");

	// CONSTRUCT FINAL SCRIPT AND SEND IT TO JMOL

	var finalSpt = "# jmolPickCallback();\n" + hiddenCurrentSpt +
		targCurrentSpt + echoId;
	
	doMolViewSpt(finalSpt); // jmolPickCallback(), per-click hiding

	if (selectMode != "")
		top.showHelp2("makePreContactsHelp()"); // in jmolPickCallback()
	else if (hideMode != "")
		top.showHelp2("makeHideHelp()");

	// SEND ATOM ID TO STATUS LINE
	// This must go after the echo, because it puts "Jmol script completed"
	// in the status line.
	//status = atomid;
	// still trumped by "Jmol script completed"
	// try a delay

	AtomId = atomid;

	// Windows 98SE, 10 msec is borderline (sometimes works, sometimes doesn't).
	// 100 msec works. Use 200 to be safe.

	setTimeout("AtomIdToStatus()", 200);

//	if (!top.centerMode)
//		return;

//	alert("moldoc.js: pickcallback centerMode true");

// This method produced unwanted zoom changes.
//	var cspt = p2.substring(p2.indexOf("#") + 1);
//	cspt = "center atomno=" + cspt + ";\n";
//	alert (cspt);

// Attempt to turn off centering after one click failed because
// Jmol does not call pickCallback in set picking center mode!
// See cancelCentering().
//	centeredAtom = p2;
//	cspt = "set picking ident;"

//	scriptToJmol(cspt);
//	top.centerMode = false;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
function AtomIdToStatus()
{
	status = AtomId;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

