When Charges.. is clicked
	doViewLink()
		doViewLinkAfterEnds()
		  getChainEnds()* is run if not previously run in the session.
			getCharges()* is run to count visible charges.
	now with endsGotten and chargeGotten,
	doViewLink()
		makeChargeHelp()
		makeChargeSpt()

*The Charge.. display colors sidechains, and also charged ends of protein chains.
Therefore, Ends must be gotten before Charge.
Ends need be gotten only once, but visible charge counts need to be tallied every time
in case different moieties are hidden.

See also ENDS.TXT

getCharges() (moltab.js) has CHARGE EXAMPLES (search for that)
For HETERO END CHARGES, see moltab.js END EXAMPLES

getCharges() (moltab.js)
	counts visible sidechain charges
  counts charged residues with incomplete sidechains
  getCharges2() (setTimeout to let progress help display)
		getAminoTermini()
			NTChargedChains/Seqnums, NTMissingChains, NTBlockedChains
			parses jmolEvaluate({...}.ident.all)
			getVisNTHetero() NT charges on stdAA monomers and dipeptides
				NTChargedHetChains/AANames/Seqnums
			getBlockedChains() (not charged or missing = NTBlockedChains)
	getCharges3()
		getVisOXTChains() gets ONLY OXT chains
			visOXTChains[]
		getVisCTHetero() NOT limited to Het with OXT
			CTChargedHetChains/AANames/Seqnums
		[getVisOXTHetero() is OBSOLETE]



Probably still need getVisNTHetero() in makeChargeHelp() since Ends code is only
processing named chains, excluding things less than trimers.

In makeChargeHelp, for proteinChainsIntact, I seem to have forgotten to check for hiding of
atoms with halos.
