// debugging alerts use # 1 through # 8
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// session constants

var TODAY = new Date();

var CLIENT_PLATFORM = "";
var CLIENT_BROWSER = "";
var CLIENT_BROWSER_VERSION = 0;

var DOC_WIDTH = 790;
var DOC_HEIGHT = 400;

var MIN_TEXT_WIDTH = 200;
var MAX_TEXT_WIDTH = 400;

var MIN_APPLET_WIDTH = 50;
var MAX_APPLET_WIDTH = 5000;

var buttonDetailsDivisionNamePrefix = "jttDetails";

var isContents; // Added by Eric

var acceptViewZoomValue = false; // Added by Eric
var viewZoomValueMsg = "+-show-zoom-value-next-+";

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// buttons array indices
var iMoleculeFilename = 0;
var iScript = 1;
var iButtonType = 2; // link, button, radio, or checkbox
var iScriptMode = 3;
var iButtonLabel = 4;
var iButtonPrefixText = 5;
var iButtonText = 6;
var iScriptCheckboxUnchecked = 7;
var iDetailsText = 8;
var iBackgroundColor = 9;
var iJmolCount = 10; // see dualquad.js
var iSpinning = 11; // see dualquad.js
var iSync = 12; // see dualquad.js
var iDetailsTitle = 13;
var iPreButtonText = 14;
var iPostButtonText = 15;

// page variables

var text_h = 400;
var text_w = 200;

var jmol_h = 400;
var jmol_w = 400;

// changing this seems to have no effect whatsoever on div heights
var height_offset = 10;

var text_layout = 'left';

var text_font = 'verdana';
var text_fontsize = '1em';
var text_fontstyle = 'normal';
var text_fontweight = 'normal';

var jmol_layout = 'right';

var jmol_font = 'verdana';
var jmol_fontsize = 12;
var jmol_fontstyle = 'normal';
var jmol_fontweight = 'bold';

var nav_font = 'verdana';
var nav_fontsize = 12;
var nav_fontstyle = 'normal';
var nav_fontweight = 'bold';

var page_title = '';
var page_subtitle = '';
var page_intro = '';

var nav_location = 'bottom';
var nav_style = 'link';
var nav_contents = '';
var nav_reset = false;
var nav_previous = '';
var nav_next = '';


var buttonNumber = 0;
var buttons = new Array();
buttons[0] = new Array( 'undefined.pdb', '' );

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// the following added by Frieda
// Angel Herraez's code
// for "foolproof" spin toggle that detects spin state and acts accordingly
// Modified by Eric to accomodate later versions of Jmol which message
// the "spin on" in a separate line.

// Eric later added code to append drag2rotate.spt to script queue when
// message echoDrag2Rotate is received.

function processMessageCallback(jmolId_, msg_)
{

	// Convert both parameters from Java strings to JavaScript strings:
	// a_ will start with "jmolApplet": strip and leave just the ID part
	var jmolSuffix = ("" + jmolId_).substring("jmolApplet".length);
	var msg = "" + msg_;

//	alert("dvrblite.js #7: " + msg);

	/* WRITE NEW JMOLS AFTER OLD ONES ARE ZAPPED */
	if (waitingForZapping)
	{
		if (msg.indexOf(zapCompletedMessage) != -1)
		{
			jmolsZapped++;
//			alert("dvrblite.js #6: jmolsZapped=" + jmolsZapped);
		}
		if (jmolsZapped == currentJmolCount)
		{
			waitingForZapping = false;
			multiJmolClick2();
		}
	}

	/*  SPIN DETECTION AND TOGGLE */
	var detectShowSpin = "spinFps"; // earlier was "set spin".

	if ( msg.indexOf(detectShowSpin) != -1 )
	{
//		alert(msg);

		// In the former single applet implementation, the targetSuffix
		// parameter to jmolScript() was jmolSuffix.

		// This works in one jmol: if (_spinning); spin off; else; spin on; end if;
		// but if sent to all, might toggle some on and some off!

		if ( msg.indexOf("spin on") != -1 ) //was spinning
		{
			if (currentJmolCount > 1 && buttons[currentButtonNumber][iSync])
			{
				// Jmol #1 to next to last
				for (var ijmol = 1; ijmol <= (currentJmolCount - 1); ijmol++)
					jmolScript("!spin off;", ("" + ijmol));

				// Last Jmol
				jmolScript("!spin off;\n" + syncOnCommand, ("" + currentJmolCount));

				document.jmolForm.checksync.checked = true;
			}
			else
				jmolScript("!spin off;\n", "all") 
		}

		else //was not spinning
		{
			if (currentJmolCount > 1)
			{
				// Jmol #1 to next to last
				for (var ijmol = 1; ijmol <= (currentJmolCount - 1); ijmol++)
					jmolScript("!spin on;", ("" + ijmol));

				// Last Jmol @@ change . to *?
				jmolScript("!" + syncOffCommand + "\nspin on;\n",
					("" + currentJmolCount));

				document.jmolForm.checksync.checked = false;
			}
			else
				jmolScript("!spin on;", "all") 
		}
	}
	/*  END of SPIN DETECTION AND TOGGLE  */

	//--------------------------------
	/*  READY TO SEND NEXT SCRIPT */

	if ( msg.indexOf(detectJmolReady) != -1 )
	{
//		alert("dvrblite.js #3: detectJmolReady ->\n" +
//			"sendNextScript() with jmolSuffix = " + jmolSuffix);

		// Tried slight delay because when on server (but not when local files)
		// sometimes a molecule fails to be loaded.
		setTimeout("sendNextScript(" + jmolSuffix + ")", 100);
	}
	/*  END of READY TO SEND NEXT SCRIPT */

	//--------------------------------
	/*  DETECT ZOOM */

	// from "message " + viewZoomValueMsg
	if (msg.indexOf(viewZoomValueMsg) != -1)
	{
		acceptViewZoomValue = true;
//		alert("dvrblite.js #5: acceptViewZoomValue = " + acceptViewZoomValue);
	}

	// from "show zoom"
	if (msg.indexOf('zoom ') == 0 && acceptViewZoomValue) // "zoom #" (first word)
	{
		viewZoomValue = parseFloat(msg.substring(5));
//		alert("dvrblite.js #4: |" + viewZoomValue + "|");
		acceptViewZoomValue = false;
		setZoomValue();
	}
	/*  END of DETECT FINAL ZOOM */

	//--------------------------------
	/*  APPEND DRAG2ROTATE SCRIPT */
	// This script cannot be in the view .spt file because it delays the
	// beginning of spinning.

	if ( msg.indexOf(echoDrag2Rotate) != -1  && !debugJTATSpt)
	{
		jmolScript("script ../../_sptutil/drag2rotate.spt;", ("" + jmolSuffix));
	}
	/*  END of DRAG2ROTATE */

	//--------------------------------
	/*  EXECUTE doCenterAll() */
	// The center all button is an echo, so clicking it generates no
	// pickcallback. A Jmol script is attached to the click.
	// Using Jmol's javascript to call doCenterAll() was unreliable in Safari.
	// Therefore I use Jmol's message command to trigger calling the function.

	if ( msg.indexOf("RequestingDoCenterAll") != -1)
	{
		doCenterAll();
	}
	/*  END of EXECUTE doCenterall() */
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// functions
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function initSessionConstants() {

	if (typeof window.innerWidth != "undefined") {
		DOC_WIDTH = window.innerWidth;
		DOC_HEIGHT = window.innerHeight;
	}

	else if (typeof document.documentElement.offsetWidth != "undefined") {
		DOC_WIDTH = document.documentElement.offsetWidth; 
		DOC_HEIGHT = document.documentElement.offsetHeight; 
	}

	else {
		DOC_WIDTH = document.body.offsetWidth; 
		DOC_HEIGHT = document.body.offsetHeight; 
	}
	
	CLIENT_BROWSER_VERSION = parseFloat(navigator.appVersion);
	
	if ((navigator.appVersion).toLowerCase().indexOf("mac") != -1)
		CLIENT_PLATFORM =  "mac";
	else if ((navigator.appVersion).toLowerCase().indexOf("win") != -1)
		CLIENT_PLATFORM =  "win";
	else 
		CLIENT_PLATFORM =  "other";

	var app = navigator.appVersion.toLowerCase();
	if ((app.indexOf("msie") != -1) || (app.indexOf("explorer") != -1)) 
		CLIENT_BROWSER = "ie";
	else if (app.indexOf("netscape") != -1) CLIENT_BROWSER = "netscape";
	else if (app.indexOf("safari") != -1) CLIENT_BROWSER = "safari";
	else if (app.indexOf("chimera") != -1) CLIENT_BROWSER = "chimera";
	else if (app.indexOf("mozilla") != -1) CLIENT_BROWSER = "mozilla";
	else CLIENT_BROWSER = "unknown";

}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function initPageVariables() {

	DOC_WIDTH = DOC_WIDTH-22;


	text_h = DOC_HEIGHT - 30;
	// original value for this height constant was 20
	// Frieda increased to 50 to make room for control(s) beneath applet
	//IE needs 50; safari only 30; oh well
	// this seems to be the only way to change the height
	// i.e., 'setHeightOffset' in config.js seems to do nothing

	text_w = 0.40 * DOC_WIDTH;
	
	jmol_h = text_h - 20;
	jmol_w = DOC_WIDTH - text_w - 30;
		
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function writeContainerStyle() {
	document.write(
	'<style type="text/css" media="all">' +
	'#container {' +
	'width: ' + (DOC_WIDTH) + 'px;' +
	'background-color: #FFFFFF;' +
	'}' +
	'<\/style>');
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setTextLayout( side ) {

	if ( side == 'right' ) {
		text_layout = 'right';
		jmol_layout = 'left';
	}
	
	else {
		text_layout = 'left';
		jmol_layout = 'right';
	}

}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setTextWidth( pct ) {

	text_w = pct * DOC_WIDTH;
	
	if ( text_w < MIN_TEXT_WIDTH ) 
		text_w = MIN_TEXT_WIDTH;
		
	else if ( text_w > MAX_TEXT_WIDTH ) 
		text_w = MAX_TEXT_WIDTH;
	
	jmol_w = DOC_WIDTH - text_w - 25;
	
}
function setHeightOffset( offset ) {

	height_offset = offset;
	_setAutoHeight();
	
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setTextFontFace( font ) {
	text_font = font;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setTextFontSize( sz ) {
	text_fontsize = sz;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setTextFontStyle( style ) {
	text_fontstyle = style;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setTextFontWeight( wt ) {
	text_fontweight = wt;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setTextColor( color ) {
	text_color = color;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setTextBackground( color ) {
	text_background = color;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setTextAlinkColor( color ) {
	text_alinkcolor = color;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setTextVlinkColor( color ) {
	text_vlinkcolor = color;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setPageTitle( txt ) {
	page_title = txt;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setPageIntro( txt ) {
	page_intro = txt;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setNavFontFace( font ) {
	nav_font = font;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setNavFontSize( sz ) {
	nav_fontsize = sz;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setNavFontStyle( style ) {
	nav_fontstyle = style;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setNavFontWeight( wt ) {
	nav_fontweight = wt;
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setNavigationBar( loc, style ) {
	nav_location = loc;
	nav_style = style;
}
  

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setNavigation( cont, reset, prev, next )
{
	nav_contents = cont;
	nav_reset = reset;
	nav_previous = prev;
	nav_next = next;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setJmolFontFace( font ) {
	jmol_font = font;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setJmolFontSize( sz ) {
	jmol_fontsize = sz;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setJmolFontStyle( style ) {
	jmol_fontstyle = style;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setJmolFontWeight( wt ) {
	jmol_fontweight = wt;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setJmolColor( color ) {
	jmol_color = color;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setJmolBackground( color ) {
	jmol_background = color;
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getNavigation() {
	return nav_location;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getTextHeight() {
	return text_h;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getTextWidth() {
	return text_w;
}
function getTextLayout() {
	return text_layout;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getTextColor( fmt ) {

	if ( !fmt ) 
		var fmt = '';
		
	return _getColor( text_color, fmt );
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getTextBackground( fmt ) {

	if ( !fmt ) 
		var fmt = '';
		
	return _getColor( text_background, fmt );

}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getTextFontFace() {
	return text_font;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getTextFontSize() {
	return text_fontsize;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getTextFontStyle() {
	return text_fontstyle;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getTextFontWeight() {
	return text_fontweight;
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/* BEGIN COMMENT OUT

Frieda's failed attempt (so far!) to get link colors 
   into the config. js file:


function getTextAlinkColor() {

	if ( !fmt ) 
		var fmt = '';
		
	return _getColor( text_alinkcolor, fmt );
}

function getTextVlinkColor() {

	if ( !fmt ) 
		var fmt = '';
		
	return _getColor( text_vlinkcolor, fmt );
	
}
END COMMENT OUT */
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

function getPageTitle() {
	return page_title;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

function getPageIntro() {
	return page_intro;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getNavColor( fmt ) {

	if ( !fmt ) 
		var fmt = '';
		
	return _getColor( nav_color, fmt );
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getNavBackground( fmt ) {

	if ( !fmt ) 
		var fmt = '';
		
	return _getColor( nav_background, fmt );
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getNavFontFace() {
	return nav_font;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getNavFontSize() {
	return nav_fontsize;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getNavFontStyle() {
	return nav_fontstyle;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getNavFontWeight() {
	return nav_fontweight;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getButtonCount()
{
	var count = buttons.length - 1;
//	alert("dvrblite.js #1: getButtonCount() returns " + count);
	return count;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getJmolLayout() {
	return jmol_layout;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getJmolWidth() {
	return jmol_w;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getJmolHeight() {
	return jmol_h;
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getJmolColor( fmt ) {
	
	if ( !fmt ) 
		var fmt = '';
		
	return _getColor( jmol_color, fmt );
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getJmolBackground( fmt ) {

	if ( !fmt ) 
		var fmt = '';
		
	return _getColor( jmol_background, fmt );
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getJmolFontFace() {
	return jmol_font;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getJmolFontSize() {
	return jmol_fontsize;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getJmolFontStyle() {
	return jmol_fontstyle;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getJmolFontWeight() {
	return jmol_fontweight;
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getResetSpt()
{
// frieda added some commands
	var spt = 'script ../../_sptutil/vreset.spt;\n';
	
	return spt;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getReorientSpt() {

	var spt = 'reset;';
	return spt;
	
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getDisplaySpt() {

	var spt = 'set specular 5;' + 
	'set ambient 40;' + 
	'set diffuse 75;' + 
	'background ' + getJmolBackground('jmol') + ';' + 
	'font labels ' + getJmolFontSize() + ' ' + getJmolFontFace() + ' ' + getJmolFontWeight() + ';' + 
	'color labels ' + getJmolColor('jmol') + ';' ;
	
	
	// following if statement added by Frieda
	// this is so when a page loads, 
	// the echo "Now Showing View 1" appears in the applet.
	// getDisplaySpt is called whenever a page loads,
	// so it is a good place to add this.
	// BUT on the index (contents) page
	// there is no view 1, just a default view, so we suppress this echo.
	// note var isContents is also used in deciding whether to put a Contents button on the page.
	
	if (!isContents) {

		spt += 'font echo 16 sans bold; color echo [xcccccc]; ' +
		'set echo viewNumber ' + viewNumberEchoPosition + '; ' +
		'color echo [xcccccc]; ' +
		'echo Now Showing View 1; ';
	}
	
	return spt;	
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function getDefaultSpt() {

	var spt = 'select protein;color chain;backbone 0.5;' + 
	'select nucleic;color cpk;wireframe 0.4;' + 
	'select (a and not backbone);color blue;' + 
	'select (c and not backbone);color red;' + 
	'select (t and not backbone);color yellow;' + 
	'select (g and not backbone);color green;' + 
	'select (u and not backbone);color brown;' + 
	'select (hetero and not solvent);color cpk;wireframe 0.4;spacefill 40%;' + 
	'select solvent;color bluetint;wireframe 0.4;spacefill 40%;';

	return spt;	
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function setStart( pdb, spt ) {

	buttons[0][iMoleculeFilename] = pdb;

	if ( !spt ) 
		buttons[0][iScript] = getDefaultSpt();
	else 
		buttons[0][iScript] = spt;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function makeNavigation()
{
	var writeStr = '';
	
	writeStr += '<p class="nav">';
	
	switch ( nav_style ) {
	
		case 'button'	: 

			// CONTENTS
			if (nav_contents != "")
			{
				writeStr += 
				'<input type="button" value="Contents" ' +
				'title="All Chapters" ' +
				'onclick="location.href=\'' + nav_contents + '\'" \/>' +
				'&nbsp;&nbsp;&nbsp;';
			}

			// RESET
//			alert("dvrblite.js #8: nav_reset = " + nav_reset);
			if (!isContents && nav_reset)
			{
				writeStr += 
				'<input type="button" value="Replay/Reset Initial View" ' +
//				'title="View 1, resetting orientation and zoom" ' +
				'onclick="resetInitialView()" \/>' +
				'<br>';
			}

			// PREVIOUS
			if ( nav_previous != '' )
			{
				writeStr += 
				'<input type="button" value="&lt;- Previous" ' + 
				'title="Previous Chapter" ' +
				'onclick="location.href=\'' + nav_previous + '\'" \/>' + 
				' &nbsp; &nbsp; &nbsp; ';
			}

			// NEXT
			if ( nav_next != '' )
			{
				writeStr += 
				'<input type="button" value="Next -&gt;" ' + 
				'title="Next Chapter" ' +
				'onclick="location.href=\'' + nav_next + '\'" \/>';
			}
			
			break;

	// NOTE: CONTENTS AND RESET BUTTONS HAVE NOT YET BEEN IMPLEMENTED
	// FOR THE LINK STYLE.
		case 'link'	: 
			if ( nav_previous != '' ) {
				writeStr += 
				'<a href="' + nav_previous + '" ' + 
				'title="Go back to the previous page.">&lt;- Previous</a>' + 
				'&nbsp;&nbsp;&nbsp;';
			}
			if ( nav_next != '' ) {
				writeStr += 
				'<a href="' + nav_next + '" ' + 
				'title="Go to the next page.">Next -&gt;</a>';
			}
			break;

	}

	writeStr += '<\/p>';

	return writeStr;
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function _setAutoHeight() {

	text_h = DOC_HEIGHT - height_offset - 20;
	jmol_h = text_h;
	
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function _getColor( raw, fmt ) {

	//alert( 'getColor with raw=' + raw + ', fmt=' + fmt );
	
	if ( !fmt ) 
		var fmt = '';
		
	var color = raw;
	var word = 0;
	
	if ( color.search( '/[g-zG-Z]/' ) != -1 ) 
		word = 1;
	else 
		word = 0;
		
	switch ( fmt ) {
	
		case 'css'	: 
			if ( !word ) 
				color = '#' + color;
			break;

		case 'html'	: 
			if ( !word ) 
				color = '#' + color;
			break;

		case 'jmol'	: 
			if ( !word ) 
				color = '[x' + color + ']';
			break;

	}
	
	return color;

}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
