I'm at a total loss to explain this.

There are two adjacent lines in Jmol's Java code:

setB("testFlag4", testFlag4)
setB("traceAlpha", traceAlpha)

now, setB just goes to a method that turns the names into lower case and stores Boolean.TRUE or Boolean.FALSE in a Hashtable. Just before doing that, in the
JavaScript, I insert a call to System.out.println to show the name, the value, what Boolean is and what Boolean.TRUE and Boolean.FALSE are.

Take a look:


name testflag4 value false Boolean:function () {
    Clazz_instantialize (this, arguments);
} true false

name tracealpha value true Boolean:function Boolean() {
[native code]
} undefined false

Somehow, in between executing these two calls, Safari is changing the definition of Boolean.

After changing the message, I get:


name testflag4 value false Boolean:function Boolean() {
[native code]
} put=undefined
name tracealpha value true Boolean:function Boolean() {
[native code]
} put=undefined

so now this is happening slightly sooner. Probably the reason it all works with the developer console open is simply that this other thread, whatever it is, is working at a different time.

And in another load we have:

name zoomenabled value true Boolean:function Boolean() {
[native code]
} put=undefined

Now, that HAD to throw an error, because you can't put an undefined value into a Hashtable, but, wait! Looky here. The model loaded, and what do you know? :

jmolApplet0._applet.viewer.global.htBooleanParameterFlags.get("zoomenabled").booleanValue()

true

It DID put Boolean.TRUE into the Hashtable after all.

WHAT COULD THIS POSSIBLY BE??

Version 6.1 (8537.71)


--
Robert M. Hanson
Larson-Anderson Professor of Chemistry
St. Olaf College
Northfield, MN
http://www.stolaf.edu/people/hansonr


If nature does not answer first what we want,
it is better to take what answer we get.

-- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900