annotate lib/Jmol/Jmol.js @ 0:4816e4a8ae95 draft default tip

Uploaded
author deepakjadmin
date Wed, 20 Jan 2016 09:23:18 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1 /* Jmol 12.0 script library Jmol.js 9:48 PM 1/31/2011 Bob Hanson
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
2
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
3 checkbox heirarchy -- see http://chemapps.stolaf.edu/jmol/docs/examples-11/check.htm
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
4
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
5 based on:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
6 *
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
7 * Copyright (C) 2004-2005 Miguel, Jmol Development, www.jmol.org
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
8 *
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
9 * Contact: hansonr@stolaf.edu
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
10 *
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
11 * This library is free software; you can redistribute it and/or
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
12 * modify it under the terms of the GNU Lesser General Public
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
13 * License as published by the Free Software Foundation; either
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
14 * version 2.1 of the License, or (at your option) any later version.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
15 *
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
16 * This library is distributed in the hope that it will be useful,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
19 * Lesser General Public License for more details.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
20 *
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
21 * You should have received a copy of the GNU Lesser General Public
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
22 * License along with this library; if not, write to the Free Software
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
24 * 02111-1307 USA.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
25 */
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
26
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
27 // for documentation see www.jmol.org/jslibrary
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
28
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
29 try{if(typeof(_jmol)!="undefined")exit()
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
30
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
31 // place "?NOAPPLET" on your command line to check applet control action with a textarea
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
32 // place "?JMOLJAR=xxxxx" to use a specific jar file
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
33
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
34 // bob hanson -- jmolResize(w,h) -- resizes absolutely or by percent (w or h 0.5 means 50%)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
35 // angel herraez -- update of jmolResize(w,h,targetSuffix) so it is not tied to first applet
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
36 // bob hanson -- jmolEvaluate -- evaluates molecular math 8:37 AM 2/23/2007
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
37 // bob hanson -- jmolScriptMessage -- returns all "scriptStatus" messages 8:37 AM 2/23/2007
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
38 // bob hanson -- jmolScriptEcho -- returns all "scriptEcho" messages 8:37 AM 2/23/2007
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
39 // bob hanson -- jmolScriptWait -- 11:31 AM 5/2/2006
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
40 // bob hanson -- remove trailing separatorHTML in radio groups -- 12:18 PM 5/6/2006
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
41 // bob hanson -- adds support for dynamic DOM script nodes 7:04 AM 5/19/2006
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
42 // bob hanson -- adds try/catch for wiki - multiple code passes 7:05 AM 5/19/2006
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
43 // bob hanson -- auto-initiates to defaultdir/defaultjar -- change as desired.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
44 // bob hanson -- adding save/restore orientation w/ and w/o delay 11:49 AM 5/25/2006
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
45 // bob hanson -- adding AjaxJS service 11:16 AM 6/3/2006
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
46 // bob hanson -- fix for iframes not available for finding applet
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
47 // bob hanson -- added applet fake ?NOAPPLET URL flag
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
48 // bob hanson -- added jmolSetCallback(calbackName, funcName) 3:32 PM 6/13/2006
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
49 // used PRIOR to jmolApplet() or jmolAppletInline()
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
50 // added 4th array element in jmolRadioGroup -- title
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
51 // added <span> and id around link, checkbox, radio, menu
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
52 // fixing AJAX loads for MSIE/Opera-Mozilla incompatibility
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
53 // -- renamed Jmol-11.js from Jmol-new.js; JmolApplet.jar from JmolAppletProto.jar
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
54 // renamed Jmol.js for Jmol 11 distribution
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
55 // -- modified jmolRestoreOrientation() to be immediate, no 1-second delay
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
56 // bob hanson -- jmolScriptWait always returns a string -- 11:23 AM 9/16/2006
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
57 // bh -- jmolCommandInput()
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
58 // bh -- jmolSetTranslation(TF) -- forces translation even if there might be message callback issues
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
59 // bh -- minor fixes suggested by Angel
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
60 // bh -- adds jmolSetSyncId() and jmolGetSyncId()
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
61 // bh 3/2008 -- adds jmolAppendInlineScript() and jmolAppendInlineArray()
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
62 // bh 3/2008 -- fixes IE7 bug in relation to jmolLoadInlineArray()
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
63 // bh 6/2008 -- adds jmolSetAppletWindow()
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
64 // Angel H. 6/2008 -- added html <label> tags to checkboxes and radio buttons [in jmolCheckbox() and _jmolRadio() functions]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
65 // bh 7/2008 -- code fix "for(i..." not "for(var i..."
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
66 // bh 12/2008 -- jmolLoadInline, jmolLoadInlineArray, jmolLoadInlineScript, jmolAppendInlineScript, jmolAppendInlineArray all return error message or null (Jmol 11.7.16)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
67 // bh 12/2008 -- jmolScriptWaitOutput() -- waits for script to complete and delivers output normally sent to console
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
68
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
69 // bh 5/2009 -- Support for XHTML using jmolSetXHTML(id)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
70 // ah & bh 6/2009 -- New jmolResizeApplet() more flexible, similar to jmolApplet() size syntax
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
71 // bh 11/2009 -- care in accessing top.document
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
72 // bh 12/2009 -- added jmolSetParameter(name, value)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
73 // bh 12/2009 -- added PARAMS=name:value;name:value;name:value... for command line
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
74 // bh 12/2009 -- overhaul of target checking
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
75 // bh 1/2010 -- all _xxxx() methods ALWAYS have complete argument list
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
76 // bh 1/2010 -- adds option to run a JavaScript function from any Jmol control.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
77 // This is accomplished by passing an array rather than a script:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
78 // jmolHref([myfunc,"my param 1", "my param 2"], "testing")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
79 // function myfunc(jmolControlObject, [myfunc,"my param 1", "my param 2"], target){...}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
80 // and allows much more flexibility with responding to controls
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
81 // bh 4/2010 -- added jmolSetMemoryMb(nMb)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
82 // ah 1/2011 -- wider detection of browsers; more browsers now use the object tag instead of the applet tag;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
83 // fix of object tag (removed classid) accounts for change of behavior in Chrome
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
84
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
85 var defaultdir = "."
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
86 var defaultjar = "JmolApplet.jar"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
87
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
88
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
89 // Note added 12:41 PM 9/21/2008 by Bob Hanson, hansonr@stolaf.edu:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
90
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
91 // JMOLJAR=xxxxx.jar on the URL for this page will override
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
92 // the JAR file specified in the jmolInitialize() call.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
93
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
94 // The idea is that it can be very useful to test a web page with different JAR files
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
95 // Or for an expert user to substitute a signed applet for an unsigned one
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
96 // so as to use a broader range of models or to create JPEG files, for example.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
97
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
98 // If the JAR file is not in the current directory (has any sort of "/" in its name)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
99 // then the user is presented with a warning and asked whether it is OK to change Jar files.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
100 // The default action, if the user just presses "OK" is to NOT allow the change.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
101 // The user must type the word "yes" in the prompt box for the change to be approved.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
102
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
103 // If you don't want people to be able to switch in their own JAR file on your page,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
104 // simply set this next line to read "var allowJMOLJAR = false".
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
105
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
106
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
107 var undefined; // for IE 5 ... wherein undefined is undefined
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
108
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
109 ////////////////////////////////////////////////////////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
110 // Basic Scripting infrastruture
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
111 ////////////////////////////////////////////////////////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
112
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
113 function jmolInitialize(codebaseDirectory, fileNameOrUseSignedApplet) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
114 if (_jmol.initialized)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
115 return;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
116 _jmol.initialized = true;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
117 if(_jmol.jmoljar) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
118 var f = _jmol.jmoljar;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
119 if (f.indexOf("/") >= 0) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
120 alert ("This web page URL is requesting that the applet used be " + f + ". This is a possible security risk, particularly if the applet is signed, because signed applets can read and write files on your local machine or network.")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
121 var ok = prompt("Do you want to use applet " + f + "? ","yes or no")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
122 if (ok == "yes") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
123 codebaseDirectory = f.substring(0, f.lastIndexOf("/"));
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
124 fileNameOrUseSignedApplet = f.substring(f.lastIndexOf("/") + 1);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
125 } else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
126 _jmolGetJarFilename(fileNameOrUseSignedApplet);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
127 alert("The web page URL was ignored. Continuing using " + _jmol.archivePath + ' in directory "' + codebaseDirectory + '"');
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
128 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
129 } else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
130 fileNameOrUseSignedApplet = f;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
131 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
132 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
133 _jmolSetCodebase(codebaseDirectory);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
134 _jmolGetJarFilename(fileNameOrUseSignedApplet);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
135 _jmolOnloadResetForms();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
136 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
137
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
138 function jmolSetTranslation(TF) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
139 _jmol.params.doTranslate = ''+TF;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
140 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
141
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
142 function _jmolGetJarFilename(fileNameOrFlag) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
143 _jmol.archivePath =
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
144 (typeof(fileNameOrFlag) == "string" ? fileNameOrFlag : (fileNameOrFlag ? "JmolAppletSigned" : "JmolApplet") + "0.jar");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
145 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
146
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
147 function jmolSetDocument(doc) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
148 _jmol.currentDocument = doc;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
149 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
150
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
151 function jmolSetAppletColor(boxbgcolor, boxfgcolor, progresscolor) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
152 _jmolInitCheck();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
153 _jmol.params.boxbgcolor = boxbgcolor;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
154 if (boxfgcolor)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
155 _jmol.params.boxfgcolor = boxfgcolor
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
156 else if (boxbgcolor == "white" || boxbgcolor == "#FFFFFF")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
157 _jmol.params.boxfgcolor = "black";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
158 else
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
159 _jmol.params.boxfgcolor = "white";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
160 if (progresscolor)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
161 _jmol.params.progresscolor = progresscolor;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
162 if (_jmol.debugAlert)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
163 alert(" boxbgcolor=" + _jmol.params.boxbgcolor +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
164 " boxfgcolor=" + _jmol.params.boxfgcolor +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
165 " progresscolor=" + _jmol.params.progresscolor);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
166 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
167
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
168 function jmolSetAppletWindow(w) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
169 _jmol.appletWindow = w;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
170 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
171
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
172 function jmolApplet(size, script, nameSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
173 _jmolInitCheck();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
174 return _jmolApplet(size, null, script, nameSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
175 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
176
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
177 ////////////////////////////////////////////////////////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
178 // Basic controls
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
179 ////////////////////////////////////////////////////////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
180
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
181 // undefined means it wasn't there; null means it was explicitly listed as null (so as to skip it)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
182
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
183 function jmolButton(script, label, id, title) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
184 _jmolInitCheck();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
185 id != undefined && id != null || (id = "jmolButton" + _jmol.buttonCount);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
186 label != undefined && label != null || (label = script.substring(0, 32));
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
187 ++_jmol.buttonCount;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
188 var scriptIndex = _jmolAddScript(script);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
189 var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input type='button' name='" + id + "' id='" + id +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
190 "' value='" + label +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
191 "' onclick='_jmolClick(this," + scriptIndex + _jmol.targetText +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
192 ")' onmouseover='_jmolMouseOver(" + scriptIndex +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
193 ");return true' onmouseout='_jmolMouseOut()' " +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
194 _jmol.buttonCssText + " /></span>";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
195 if (_jmol.debugAlert)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
196 alert(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
197 return _jmolDocumentWrite(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
198 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
199
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
200 function jmolCheckbox(scriptWhenChecked, scriptWhenUnchecked,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
201 labelHtml, isChecked, id, title) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
202 _jmolInitCheck();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
203 id != undefined && id != null || (id = "jmolCheckbox" + _jmol.checkboxCount);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
204 ++_jmol.checkboxCount;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
205 if (scriptWhenChecked == undefined || scriptWhenChecked == null ||
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
206 scriptWhenUnchecked == undefined || scriptWhenUnchecked == null) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
207 alert("jmolCheckbox requires two scripts");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
208 return;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
209 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
210 if (labelHtml == undefined || labelHtml == null) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
211 alert("jmolCheckbox requires a label");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
212 return;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
213 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
214 var indexChecked = _jmolAddScript(scriptWhenChecked);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
215 var indexUnchecked = _jmolAddScript(scriptWhenUnchecked);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
216 var eospan = "</span>"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
217 var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input type='checkbox' name='" + id + "' id='" + id +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
218 "' onclick='_jmolCbClick(this," +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
219 indexChecked + "," + indexUnchecked + _jmol.targetText +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
220 ")' onmouseover='_jmolCbOver(this," + indexChecked + "," +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
221 indexUnchecked +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
222 ");return true' onmouseout='_jmolMouseOut()' " +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
223 (isChecked ? "checked='true' " : "")+ _jmol.checkboxCssText + " />"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
224 if (labelHtml.toLowerCase().indexOf("<td>")>=0) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
225 t += eospan
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
226 eospan = "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
227 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
228 t += "<label for=\"" + id + "\">" + labelHtml + "</label>" +eospan;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
229 if (_jmol.debugAlert)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
230 alert(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
231 return _jmolDocumentWrite(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
232 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
233
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
234 function jmolStartNewRadioGroup() {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
235 ++_jmol.radioGroupCount;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
236 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
237
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
238 function jmolRadioGroup(arrayOfRadioButtons, separatorHtml, groupName, id, title) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
239 /*
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
240
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
241 array: [radio1,radio2,radio3...]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
242 where radioN = ["script","label",isSelected,"id","title"]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
243
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
244 */
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
245
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
246 _jmolInitCheck();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
247 var type = typeof arrayOfRadioButtons;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
248 if (type != "object" || type == null || ! arrayOfRadioButtons.length) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
249 alert("invalid arrayOfRadioButtons");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
250 return;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
251 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
252 separatorHtml != undefined && separatorHtml != null || (separatorHtml = "&nbsp; ");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
253 var len = arrayOfRadioButtons.length;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
254 jmolStartNewRadioGroup();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
255 groupName || (groupName = "jmolRadioGroup" + (_jmol.radioGroupCount - 1));
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
256 var t = "<span id='"+(id ? id : groupName)+"'>";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
257 for (var i = 0; i < len; ++i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
258 if (i == len - 1)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
259 separatorHtml = "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
260 var radio = arrayOfRadioButtons[i];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
261 type = typeof radio;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
262 if (type == "object") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
263 t += _jmolRadio(radio[0], radio[1], radio[2], separatorHtml, groupName, (radio.length > 3 ? radio[3]: (id ? id : groupName)+"_"+i), (radio.length > 4 ? radio[4] : 0), title);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
264 } else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
265 t += _jmolRadio(radio, null, null, separatorHtml, groupName, (id ? id : groupName)+"_"+i, title);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
266 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
267 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
268 t+="</span>"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
269 if (_jmol.debugAlert)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
270 alert(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
271 return _jmolDocumentWrite(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
272 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
273
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
274
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
275 function jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, id, title) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
276 _jmolInitCheck();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
277 if (_jmol.radioGroupCount == 0)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
278 ++_jmol.radioGroupCount;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
279 var t = _jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, (id ? id : groupName + "_" + _jmol.radioCount), title ? title : 0);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
280 if (_jmol.debugAlert)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
281 alert(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
282 return _jmolDocumentWrite(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
283 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
284
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
285 function jmolLink(script, label, id, title) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
286 _jmolInitCheck();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
287 id != undefined && id != null || (id = "jmolLink" + _jmol.linkCount);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
288 label != undefined && label != null || (label = script.substring(0, 32));
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
289 ++_jmol.linkCount;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
290 var scriptIndex = _jmolAddScript(script);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
291 var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><a name='" + id + "' id='" + id +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
292 "' href='javascript:_jmolClick(this," + scriptIndex + _jmol.targetText + ");' onmouseover='_jmolMouseOver(" + scriptIndex +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
293 ");return true;' onmouseout='_jmolMouseOut()' " +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
294 _jmol.linkCssText + ">" + label + "</a></span>";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
295 if (_jmol.debugAlert)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
296 alert(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
297 return _jmolDocumentWrite(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
298 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
299
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
300 function jmolCommandInput(label, size, id, title) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
301 _jmolInitCheck();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
302 id != undefined && id != null || (id = "jmolCmd" + _jmol.cmdCount);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
303 label != undefined && label != null || (label = "Execute");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
304 size != undefined && !isNaN(size) || (size = 60);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
305 ++_jmol.cmdCount;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
306 var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input name='" + id + "' id='" + id +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
307 "' size='"+size+"' onkeypress='_jmolCommandKeyPress(event,\""+id+"\"" + _jmol.targetText + ")'><input type=button value = '"+label+"' onclick='jmolScript(document.getElementById(\""+id+"\").value" + _jmol.targetText + ")' /></span>";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
308 if (_jmol.debugAlert)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
309 alert(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
310 return _jmolDocumentWrite(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
311 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
312
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
313 function _jmolCommandKeyPress(e, id, target) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
314 var keycode = (window.event ? window.event.keyCode : e ? e.which : 0);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
315 if (keycode == 13) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
316 var inputBox = document.getElementById(id)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
317 _jmolScriptExecute(inputBox, inputBox.value, target)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
318 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
319 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
320
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
321 function _jmolScriptExecute(element,script,target) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
322 if (typeof(script) == "object")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
323 script[0](element, script, target)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
324 else
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
325 jmolScript(script, target)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
326 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
327
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
328 function jmolMenu(arrayOfMenuItems, size, id, title) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
329 _jmolInitCheck();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
330 id != undefined && id != null || (id = "jmolMenu" + _jmol.menuCount);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
331 ++_jmol.menuCount;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
332 var type = typeof arrayOfMenuItems;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
333 if (type != null && type == "object" && arrayOfMenuItems.length) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
334 var len = arrayOfMenuItems.length;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
335 if (typeof size != "number" || size == 1)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
336 size = null;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
337 else if (size < 0)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
338 size = len;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
339 var sizeText = size ? " size='" + size + "' " : "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
340 var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><select name='" + id + "' id='" + id +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
341 "' onChange='_jmolMenuSelected(this" + _jmol.targetText + ")'" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
342 sizeText + _jmol.menuCssText + ">";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
343 for (var i = 0; i < len; ++i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
344 var menuItem = arrayOfMenuItems[i];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
345 type = typeof menuItem;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
346 var script, text;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
347 var isSelected = undefined;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
348 if (type == "object" && menuItem != null) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
349 script = menuItem[0];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
350 text = menuItem[1];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
351 isSelected = menuItem[2];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
352 } else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
353 script = text = menuItem;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
354 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
355 text != undefined && text != null || (text = script);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
356 if (script=="#optgroup") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
357 t += "<optgroup label='" + text + "'>";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
358 } else if (script=="#optgroupEnd") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
359 t += "</optgroup>";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
360 } else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
361 var scriptIndex = _jmolAddScript(script);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
362 var selectedText = isSelected ? "' selected='true'>" : "'>";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
363 t += "<option value='" + scriptIndex + selectedText + text + "</option>";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
364 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
365 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
366 t += "</select></span>";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
367 if (_jmol.debugAlert)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
368 alert(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
369 return _jmolDocumentWrite(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
370 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
371 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
372
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
373 function jmolHtml(html) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
374 return _jmolDocumentWrite(html);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
375 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
376
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
377 function jmolBr() {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
378 return _jmolDocumentWrite("<br />");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
379 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
380
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
381 ////////////////////////////////////////////////////////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
382 // advanced scripting functions
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
383 ////////////////////////////////////////////////////////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
384
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
385 function jmolDebugAlert(enableAlerts) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
386 _jmol.debugAlert = (enableAlerts == undefined || enableAlerts)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
387 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
388
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
389 function jmolAppletInline(size, inlineModel, script, nameSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
390 _jmolInitCheck();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
391 return _jmolApplet(size, _jmolSterilizeInline(inlineModel),
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
392 script, nameSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
393 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
394
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
395 function jmolSetTarget(targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
396 _jmol.targetSuffix = targetSuffix;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
397 _jmol.targetText = targetSuffix ? ",\"" + targetSuffix + "\"" : ",0";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
398 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
399
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
400 function jmolScript(script, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
401 if (script) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
402 _jmolCheckBrowser();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
403 if (targetSuffix == "all") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
404 with (_jmol) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
405 for (var i = 0; i < appletSuffixes.length; ++i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
406 var applet = _jmolGetApplet(appletSuffixes[i]);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
407 if (applet) applet.script(script);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
408 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
409 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
410 } else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
411 var applet=_jmolGetApplet(targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
412 if (applet) applet.script(script);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
413 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
414 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
415 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
416
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
417 function jmolLoadInline(model, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
418 if (!model)return "ERROR: NO MODEL"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
419 var applet=_jmolGetApplet(targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
420 if (!applet)return "ERROR: NO APPLET"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
421 if (typeof(model) == "string")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
422 return applet.loadInlineString(model, "", false);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
423 else
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
424 return applet.loadInlineArray(model, "", false);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
425 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
426
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
427
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
428 function jmolLoadInlineScript(model, script, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
429 if (!model)return "ERROR: NO MODEL"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
430 var applet=_jmolGetApplet(targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
431 if (!applet)return "ERROR: NO APPLET"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
432 return applet.loadInlineString(model, script, false);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
433 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
434
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
435
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
436 function jmolLoadInlineArray(ModelArray, script, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
437 if (!model)return "ERROR: NO MODEL"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
438 script || (script="")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
439 var applet=_jmolGetApplet(targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
440 if (!applet)return "ERROR: NO APPLET"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
441 try {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
442 return applet.loadInlineArray(ModelArray, script, false);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
443 } catch (err) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
444 //IE 7 bug
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
445 return applet.loadInlineString(ModelArray.join("\n"), script, false);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
446 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
447 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
448
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
449 function jmolAppendInlineArray(ModelArray, script, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
450 if (!model)return "ERROR: NO MODEL"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
451 script || (script="")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
452 var applet=_jmolGetApplet(targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
453 if (!applet)return "ERROR: NO APPLET"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
454 try {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
455 return applet.loadInlineArray(ModelArray, script, true);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
456 } catch (err) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
457 //IE 7 bug
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
458 return applet.loadInlineString(ModelArray.join("\n"), script, true);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
459 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
460 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
461
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
462 function jmolAppendInlineScript(model, script, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
463 if (!model)return "ERROR: NO MODEL"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
464 var applet=_jmolGetApplet(targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
465 if (!applet)return "ERROR: NO APPLET"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
466 return applet.loadInlineString(model, script, true);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
467 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
468
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
469 function jmolCheckBrowser(action, urlOrMessage, nowOrLater) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
470 if (typeof action == "string") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
471 action = action.toLowerCase();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
472 action == "alert" || action == "redirect" || action == "popup" || (action = null);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
473 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
474 if (typeof action != "string")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
475 alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
476 "action must be 'alert', 'redirect', or 'popup'");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
477 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
478 if (typeof urlOrMessage != "string")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
479 alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
480 "urlOrMessage must be a string");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
481 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
482 _jmol.checkBrowserAction = action;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
483 _jmol.checkBrowserUrlOrMessage = urlOrMessage;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
484 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
485 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
486 if (typeof nowOrLater == "string" && nowOrLater.toLowerCase() == "now")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
487 _jmolCheckBrowser();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
488 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
489
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
490 ////////////////////////////////////////////////////////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
491 // Cascading Style Sheet Class support
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
492 ////////////////////////////////////////////////////////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
493
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
494 function jmolSetAppletCssClass(appletCssClass) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
495 if (_jmol.hasGetElementById) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
496 _jmol.appletCssClass = appletCssClass;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
497 _jmol.appletCssText = appletCssClass ? "class='" + appletCssClass + "' " : "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
498 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
499 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
500
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
501 function jmolSetButtonCssClass(buttonCssClass) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
502 if (_jmol.hasGetElementById) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
503 _jmol.buttonCssClass = buttonCssClass;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
504 _jmol.buttonCssText = buttonCssClass ? "class='" + buttonCssClass + "' " : "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
505 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
506 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
507
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
508 function jmolSetCheckboxCssClass(checkboxCssClass) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
509 if (_jmol.hasGetElementById) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
510 _jmol.checkboxCssClass = checkboxCssClass;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
511 _jmol.checkboxCssText = checkboxCssClass ? "class='" + checkboxCssClass + "' " : "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
512 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
513 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
514
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
515 function jmolSetRadioCssClass(radioCssClass) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
516 if (_jmol.hasGetElementById) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
517 _jmol.radioCssClass = radioCssClass;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
518 _jmol.radioCssText = radioCssClass ? "class='" + radioCssClass + "' " : "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
519 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
520 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
521
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
522 function jmolSetLinkCssClass(linkCssClass) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
523 if (_jmol.hasGetElementById) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
524 _jmol.linkCssClass = linkCssClass;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
525 _jmol.linkCssText = linkCssClass ? "class='" + linkCssClass + "' " : "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
526 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
527 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
528
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
529 function jmolSetMenuCssClass(menuCssClass) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
530 if (_jmol.hasGetElementById) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
531 _jmol.menuCssClass = menuCssClass;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
532 _jmol.menuCssText = menuCssClass ? "class='" + menuCssClass + "' " : "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
533 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
534 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
535
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
536 ////////////////////////////////////////////////////////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
537 // functions for INTERNAL USE ONLY which are subject to change
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
538 // use at your own risk ... you have been WARNED!
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
539 ////////////////////////////////////////////////////////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
540 var _jmol = {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
541 currentDocument: document,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
542
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
543 debugAlert: false,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
544
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
545 codebase: "",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
546 modelbase: ".",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
547
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
548 appletCount: 0,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
549 appletSuffixes: [],
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
550 appletWindow: null,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
551 allowedJmolSize: [25, 2048, 300], // min, max, default (pixels)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
552 /* By setting the _jmol.allowedJmolSize[] variable in the webpage
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
553 before calling jmolApplet(), limits for applet size can be overriden.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
554 2048 standard for GeoWall (http://geowall.geo.lsa.umich.edu/home.html)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
555 */
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
556 buttonCount: 0,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
557 checkboxCount: 0,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
558 linkCount: 0,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
559 cmdCount: 0,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
560 menuCount: 0,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
561 radioCount: 0,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
562 radioGroupCount: 0,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
563
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
564 appletCssClass: null,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
565 appletCssText: "",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
566 buttonCssClass: null,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
567 buttonCssText: "",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
568 checkboxCssClass: null,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
569 checkboxCssText: "",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
570 java_arguments: "-Xmx512m",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
571 radioCssClass: null,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
572 radioCssText: "",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
573 linkCssClass: null,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
574 linkCssText: "",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
575 menuCssClass: null,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
576 menuCssText: "",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
577
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
578 targetSuffix: 0,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
579 targetText: ",0",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
580 scripts: [""],
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
581 params: {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
582 syncId: ("" + Math.random()).substring(3),
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
583 progressbar: "true",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
584 progresscolor: "blue",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
585 boxbgcolor: "black",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
586 boxfgcolor: "white",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
587 boxmessage: "Downloading JmolApplet ..."
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
588 },
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
589 ua: navigator.userAgent.toLowerCase(),
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
590 // uaVersion: parseFloat(navigator.appVersion), // not used
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
591
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
592 os: "unknown",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
593 browser: "unknown",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
594 browserVersion: 0,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
595 hasGetElementById: !!document.getElementById,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
596 isJavaEnabled: navigator.javaEnabled(),
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
597 // isNetscape47Win: false, // not used, N4.7 is no longer supported even for detection
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
598 useIEObject: false,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
599 useHtml4Object: false,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
600
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
601 windowsClassId: "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
602 windowsCabUrl:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
603 "http://java.sun.com/update/1.6.0/jinstall-6u22-windows-i586.cab",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
604
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
605 isBrowserCompliant: false,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
606 isJavaCompliant: false,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
607 isFullyCompliant: false,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
608
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
609 initialized: false,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
610 initChecked: false,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
611
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
612 browserChecked: false,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
613 checkBrowserAction: "alert",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
614 checkBrowserUrlOrMessage: null,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
615
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
616 archivePath: null, // JmolApplet0.jar OR JmolAppletSigned0.jar
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
617
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
618 previousOnloadHandler: null,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
619
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
620 jmoljar: null,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
621 useNoApplet: false,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
622
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
623 ready: {}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
624 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
625
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
626 with (_jmol) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
627 function _jmolTestUA(candidate) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
628 var ua = _jmol.ua;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
629 var index = ua.indexOf(candidate);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
630 if (index < 0)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
631 return false;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
632 _jmol.browser = candidate;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
633 _jmol.browserVersion = parseFloat(ua.substring(index+candidate.length+1));
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
634 return true;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
635 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
636
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
637 function _jmolTestOS(candidate) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
638 if (_jmol.ua.indexOf(candidate) < 0)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
639 return false;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
640 _jmol.os = candidate;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
641 return true;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
642 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
643
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
644 _jmolTestUA("konqueror") ||
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
645 _jmolTestUA("webkit") ||
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
646 _jmolTestUA("omniweb") ||
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
647 _jmolTestUA("opera") ||
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
648 _jmolTestUA("webtv") ||
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
649 _jmolTestUA("icab") ||
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
650 _jmolTestUA("msie") ||
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
651 (_jmol.ua.indexOf("compatible") < 0 && _jmolTestUA("mozilla")); //Netscape, Mozilla, Seamonkey, Firefox and anything assimilated
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
652
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
653 _jmolTestOS("linux") ||
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
654 _jmolTestOS("unix") ||
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
655 _jmolTestOS("mac") ||
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
656 _jmolTestOS("win");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
657
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
658 isBrowserCompliant = hasGetElementById;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
659 //
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
660 // msud@san.rr.com: July 8, 2011
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
661 //
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
662 // The following If statement block doesn't appear to work in IE 8.0 on Windows XP and
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
663 // has been replaced by "if...else if..." statements.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
664 //
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
665 // known exceptions (old browsers):
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
666 // if ((browser == "opera" && browserVersion <= 7.54 && os == "mac")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
667 //     || (browser == "webkit" && browserVersion < 125.12)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
668 //     || (browser == "msie" && os == "mac")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
669 // || (browser == "konqueror" && browserVersion <= 3.3)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
670 // ) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
671 //  isBrowserCompliant = false;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
672 // }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
673 //
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
674 // known exceptions (old browsers):
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
675
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
676 if (browser == "opera") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
677 if (browserVersion <= 7.54 && os == "mac") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
678 isBrowserCompliant = false;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
679 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
680 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
681 else if (browser == "webkit") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
682 if (browserVersion < 125.12) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
683 isBrowserCompliant = false;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
684 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
685 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
686 else if (browser == "msie") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
687 if (os == "mac") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
688 isBrowserCompliant = false;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
689 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
690 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
691 else if (browser == "konqueror") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
692 if (browserVersion < 3.3) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
693 isBrowserCompliant = false;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
694 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
695 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
696
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
697 // possibly more checks in the future for this
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
698 isJavaCompliant = isJavaEnabled;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
699
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
700 isFullyCompliant = isBrowserCompliant && isJavaCompliant;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
701
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
702 useIEObject = (os == "win" && browser == "msie" && browserVersion >= 5.5);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
703 useHtml4Object =
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
704 (browser == "mozilla" && browserVersion >= 5) ||
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
705 (browser == "opera" && browserVersion >= 8) ||
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
706 (browser == "webkit" && browserVersion >= 412.2);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
707 try {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
708 if (top.location.search.indexOf("JMOLJAR=")>=0)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
709 jmoljar = top.location.search.split("JMOLJAR=")[1].split("&")[0];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
710 } catch(e) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
711 // can't access top.location
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
712 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
713 try {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
714 useNoApplet = (top.location.search.indexOf("NOAPPLET")>=0);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
715 } catch(e) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
716 // can't access top.document
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
717 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
718 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
719
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
720 function jmolSetMemoryMb(nMb) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
721 _jmol.java_arguments = "-Xmx" + Math.round(nMb) + "m"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
722 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
723
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
724 function jmolSetParameter(name,value) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
725 _jmol.params[name] = value
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
726 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
727
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
728 function jmolSetCallback(callbackName,funcName) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
729 _jmol.params[callbackName] = funcName
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
730 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
731
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
732 try {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
733 // note this is done FIRST, so it cannot override a setting done by the developer
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
734 if (top.location.search.indexOf("PARAMS=")>=0) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
735 var pars = unescape(top.location.search.split("PARAMS=")[1].split("&")[0]).split(";");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
736 for (var i = 0; i < pars.length; i++) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
737 var p = pars[i].split(":");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
738 jmolSetParameter(p[0],p[1]);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
739 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
740 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
741 } catch(e) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
742 // can't access top.location
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
743 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
744
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
745 function jmolSetSyncId(n) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
746 return _jmol.params["syncId"] = n
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
747 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
748
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
749 function jmolGetSyncId() {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
750 return _jmol.params["syncId"]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
751 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
752
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
753 function jmolSetLogLevel(n) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
754 _jmol.params.logLevel = ''+n;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
755 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
756
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
757 /* AngelH, mar2007:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
758 By (re)setting these variables in the webpage before calling jmolApplet(),
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
759 a custom message can be provided (e.g. localized for user's language) when no Java is installed.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
760 */
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
761 if (noJavaMsg==undefined) var noJavaMsg =
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
762 "You do not have Java applets enabled in your web browser, or your browser is blocking this applet.<br />\n" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
763 "Check the warning message from your browser and/or enable Java applets in<br />\n" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
764 "your web browser preferences, or install the Java Runtime Environment from <a href='http://www.java.com'>www.java.com</a><br />";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
765 if (noJavaMsg2==undefined) var noJavaMsg2 =
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
766 "You do not have the<br />\n" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
767 "Java Runtime Environment<br />\n" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
768 "installed for applet support.<br />\n" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
769 "Visit <a href='http://www.java.com'>www.java.com</a>";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
770 function _jmolApplet(size, inlineModel, script, nameSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
771 /* AngelH, mar2007
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
772 Fixed percent / pixel business, to avoid browser errors:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
773 put "px" where needed, avoid where not.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
774
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
775 Bob Hanson, 1/2010
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
776 Fixed inline escape changing returns to |
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
777 */
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
778 with (_jmol) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
779 nameSuffix == undefined && (nameSuffix = appletCount);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
780 appletSuffixes.push(nameSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
781 ++appletCount;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
782 script || (script = "select *");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
783 var sz = _jmolGetAppletSize(size);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
784 var widthAndHeight = " width='" + sz[0] + "' height='" + sz[1] + "' ";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
785 var tHeader, tFooter;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
786 codebase || jmolInitialize(".");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
787 if (useIEObject || useHtml4Object) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
788 params.archive = archivePath;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
789 params.mayscript = 'true';
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
790 params.codebase = codebase;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
791 params.code = 'JmolApplet';
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
792 tHeader =
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
793 "<object name='jmolApplet" + nameSuffix +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
794 "' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
795 widthAndHeight + "\n";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
796 tFooter = "</object>";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
797 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
798 if (java_arguments)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
799 params.java_arguments = java_arguments;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
800 if (useIEObject) { // use MSFT IE6 object tag with .cab file reference
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
801 tHeader += " classid='" + windowsClassId + "'\n" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
802 (windowsCabUrl ? " codebase='" + windowsCabUrl + "'\n" : "") + ">\n";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
803 } else if (useHtml4Object) { // use HTML4 object tag
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
804 tHeader += " type='application/x-java-applet'\n>\n";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
805 /* " classid='java:JmolApplet'\n" + AH removed this
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
806 Chromium Issue 62076: Java Applets using an <object> with a classid paramater don't load.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
807 http://code.google.com/p/chromium/issues/detail?id=62076
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
808 They say this is the correct behavior according to the spec, and there's no indication at this point
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
809 that WebKit will be changing the handling, so eventually Safari will acquire this behavior too.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
810 Removing the classid parameter seems to be well tolerated by all browsers (even IE!).
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
811 */
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
812 } else { // use applet tag
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
813 tHeader =
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
814 "<applet name='jmolApplet" + nameSuffix +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
815 "' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
816 widthAndHeight + "\n" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
817 " code='JmolApplet'" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
818 " archive='" + archivePath + "' codebase='" + codebase + "'\n" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
819 " mayscript='true'>\n";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
820 tFooter = "</applet>";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
821 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
822 var visitJava;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
823 if (useIEObject || useHtml4Object) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
824 var szX = "width:" + sz[0]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
825 if ( szX.indexOf("%")==-1 ) szX+="px"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
826 var szY = "height:" + sz[1]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
827 if ( szY.indexOf("%")==-1 ) szY+="px"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
828 visitJava =
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
829 "<p style='background-color:yellow; color:black; " +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
830 szX + ";" + szY + ";" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
831 // why doesn't this vertical-align work?
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
832 "text-align:center;vertical-align:middle;'>\n" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
833 noJavaMsg +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
834 "</p>";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
835 } else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
836 visitJava =
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
837 "<table bgcolor='yellow'><tr>" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
838 "<td align='center' valign='middle' " + widthAndHeight + "><font color='black'>\n" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
839 noJavaMsg2 +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
840 "</font></td></tr></table>";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
841 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
842 params.loadInline = (inlineModel ? inlineModel : "");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
843 params.script = (script ? _jmolSterilizeScript(script) : "");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
844 var t = tHeader + _jmolParams() + visitJava + tFooter;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
845 jmolSetTarget(nameSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
846 ready["jmolApplet" + nameSuffix] = false;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
847 if (_jmol.debugAlert)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
848 alert(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
849 return _jmolDocumentWrite(t);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
850 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
851 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
852
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
853 function _jmolParams() {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
854 var t = "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
855 for (var i in _jmol.params)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
856 if(_jmol.params[i]!="")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
857 t+=" <param name='"+i+"' value='"+_jmol.params[i]+"' />\n";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
858 return t
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
859 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
860
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
861 function _jmolInitCheck() {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
862 if (_jmol.initChecked)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
863 return;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
864 _jmol.initChecked = true;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
865 jmolInitialize(defaultdir, defaultjar)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
866 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
867
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
868 function _jmolCheckBrowser() {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
869 with (_jmol) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
870 if (browserChecked)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
871 return;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
872 browserChecked = true;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
873
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
874 if (isFullyCompliant)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
875 return true;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
876
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
877 if (checkBrowserAction == "redirect")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
878 location.href = checkBrowserUrlOrMessage;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
879 else if (checkBrowserAction == "popup")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
880 _jmolPopup(checkBrowserUrlOrMessage);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
881 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
882 var msg = checkBrowserUrlOrMessage;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
883 if (msg == null)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
884 msg = "Your web browser is not fully compatible with Jmol\n\n" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
885 "browser: " + browser +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
886 " version: " + browserVersion +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
887 " os: " + os +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
888 " isBrowserCompliant: " + isBrowserCompliant +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
889 " isJavaCompliant: " + isJavaCompliant +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
890 "\n\n" + ua;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
891 alert(msg);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
892 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
893 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
894 return false;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
895 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
896
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
897 function jmolSetXHTML(id) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
898 _jmol.isXHTML = true
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
899 _jmol.XhtmlElement = null
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
900 _jmol.XhtmlAppendChild = false
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
901 if (id){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
902 _jmol.XhtmlElement = document.getElementById(id)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
903 _jmol.XhtmlAppendChild = true
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
904 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
905 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
906
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
907 function _jmolDocumentWrite(text) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
908 if (_jmol.currentDocument) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
909 if (_jmol.isXHTML && !_jmol.XhtmlElement) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
910 var s = document.getElementsByTagName("script")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
911 _jmol.XhtmlElement = s.item(s.length - 1)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
912 _jmol.XhtmlAppendChild = false
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
913 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
914 if (_jmol.XhtmlElement) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
915 _jmolDomDocumentWrite(text)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
916 } else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
917 _jmol.currentDocument.write(text);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
918 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
919 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
920 return text;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
921 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
922
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
923 function _jmolDomDocumentWrite(data) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
924 var pt = 0
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
925 var Ptr = []
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
926 Ptr[0] = 0
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
927 while (Ptr[0] < data.length) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
928 var child = _jmolGetDomElement(data, Ptr)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
929 if (!child)break
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
930 if (_jmol.XhtmlAppendChild)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
931 _jmol.XhtmlElement.appendChild(child)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
932 else
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
933 _jmol.XhtmlElement.parentNode.insertBefore(child, _jmol.XhtmlElement);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
934 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
935 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
936 function _jmolGetDomElement(data, Ptr, closetag, lvel) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
937 var e = document.createElement("span")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
938 e.innerHTML = data
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
939 Ptr[0] = data.length
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
940 return e
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
941
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
942 //unnecessary?
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
943
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
944 closetag || (closetag = "")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
945 lvel || (lvel = 0)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
946 var pt0 = Ptr[0]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
947 var pt = pt0
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
948 while (pt < data.length && data.charAt(pt) != "<") pt++
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
949 if (pt != pt0) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
950 var text = data.substring(pt0, pt)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
951 Ptr[0] = pt
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
952 return document.createTextNode(text)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
953 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
954 pt0 = ++pt
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
955 var ch
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
956 while (pt < data.length && "\n\r\t >".indexOf(ch = data.charAt(pt)) < 0) pt++
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
957 var tagname = data.substring(pt0, pt)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
958 var e = (tagname == closetag || tagname == "/" ? ""
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
959 : document.createElementNS ? document.createElementNS('http://www.w3.org/1999/xhtml', tagname)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
960 : document.createElement(tagname));
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
961 if (ch == ">") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
962 Ptr[0] = ++pt
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
963 return e
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
964 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
965 while (pt < data.length && (ch = data.charAt(pt)) != ">") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
966 while (pt < data.length && "\n\r\t ".indexOf(ch = data.charAt(pt)) >= 0) pt++
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
967 pt0 = pt
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
968 while (pt < data.length && "\n\r\t =/>".indexOf(ch = data.charAt(pt)) < 0) pt++
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
969 var attrname = data.substring(pt0, pt).toLowerCase()
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
970 if (attrname && ch != "=")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
971 e.setAttribute(attrname, "true")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
972 while (pt < data.length && "\n\r\t ".indexOf(ch = data.charAt(pt)) >= 0) pt++
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
973 if (ch == "/") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
974 Ptr[0] = pt + 2
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
975 return e
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
976 } else if (ch == "=") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
977 var quote = data.charAt(++pt)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
978 pt0 = ++pt
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
979 while (pt < data.length && (ch = data.charAt(pt)) != quote) pt++
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
980 var attrvalue = data.substring(pt0, pt)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
981 e.setAttribute(attrname, attrvalue)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
982 pt++
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
983 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
984 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
985 Ptr[0] = ++pt
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
986 while (Ptr[0] < data.length) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
987 var child = _jmolGetDomElement(data, Ptr, "/" + tagname, lvel+1)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
988 if (!child)break
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
989 e.appendChild(child)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
990 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
991 return e
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
992 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
993
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
994 function _jmolPopup(url) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
995 var popup = window.open(url, "JmolPopup",
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
996 "left=150,top=150,height=400,width=600," +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
997 "directories=yes,location=yes,menubar=yes," +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
998 "toolbar=yes," +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
999 "resizable=yes,scrollbars=yes,status=yes");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1000 if (popup.focus)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1001 poup.focus();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1002 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1003
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1004 function _jmolReadyCallback(name) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1005 if (_jmol.debugAlert)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1006 alert(name + " is ready");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1007 _jmol.ready["" + name] = true;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1008 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1009
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1010 function _jmolSterilizeScript(script) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1011 script = script.replace(/'/g, "&#39;");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1012 if (_jmol.debugAlert)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1013 alert("script:\n" + script);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1014 return script;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1015 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1016
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1017 function _jmolSterilizeInline(model) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1018 model = model.replace(/\r|\n|\r\n/g, (model.indexOf("|") >= 0 ? "\\/n" : "|")).replace(/'/g, "&#39;");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1019 if (_jmol.debugAlert)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1020 alert("inline model:\n" + model);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1021 return model;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1022 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1023
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1024 function _jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, id, title) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1025 ++_jmol.radioCount;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1026 groupName != undefined && groupName != null || (groupName = "jmolRadioGroup" + (_jmol.radioGroupCount - 1));
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1027 if (!script)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1028 return "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1029 labelHtml != undefined && labelHtml != null || (labelHtml = script.substring(0, 32));
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1030 separatorHtml || (separatorHtml = "")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1031 var scriptIndex = _jmolAddScript(script);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1032 var eospan = "</span>"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1033 var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input name='"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1034 + groupName + "' id='"+id+"' type='radio' onclick='_jmolClick(this," +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1035 scriptIndex + _jmol.targetText + ");return true;' onmouseover='_jmolMouseOver(" +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1036 scriptIndex + ");return true;' onmouseout='_jmolMouseOut()' " +
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1037 (isChecked ? "checked='true' " : "") + _jmol.radioCssText + " />"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1038 if (labelHtml.toLowerCase().indexOf("<td>")>=0) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1039 t += eospan
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1040 eospan = "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1041 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1042 t += "<label for=\"" + id + "\">" + labelHtml + "</label>" +eospan + separatorHtml;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1043
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1044 return t;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1045 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1046
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1047 function _jmolFindApplet(target) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1048 // first look for the target in the current window
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1049 var applet = _jmolFindAppletInWindow(_jmol.appletWindow != null ? _jmol.appletWindow : window, target);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1050 // THEN look for the target in child frames
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1051 if (applet == undefined)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1052 applet = _jmolSearchFrames(window, target);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1053 // FINALLY look for the target in sibling frames
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1054 if (applet == undefined)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1055 applet = _jmolSearchFrames(top, target); // look starting in top frame
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1056 return applet;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1057 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1058
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1059 function _jmolGetApplet(targetSuffix){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1060 var target = "jmolApplet" + (targetSuffix ? targetSuffix : "0");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1061 var applet = _jmolFindApplet(target);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1062 if (applet) return applet
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1063 _jmol.alerted || alert("could not find applet " + target);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1064 _jmol.alerted = true;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1065 return null
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1066 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1067
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1068 function _jmolSearchFrames(win, target) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1069 var applet;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1070 var frames = win.frames;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1071 if (frames && frames.length) { // look in all the frames below this window
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1072 try{
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1073 for (var i = 0; i < frames.length; ++i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1074 applet = _jmolSearchFrames(frames[i], target);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1075 if (applet)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1076 return applet;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1077 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1078 }catch(e) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1079 if (_jmol.debugAlert)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1080 alert("Jmol.js _jmolSearchFrames cannot access " + win.name + ".frame[" + i + "] consider using jmolSetAppletWindow()")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1081 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1082 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1083 return applet = _jmolFindAppletInWindow(win, target)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1084 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1085
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1086 function _jmolFindAppletInWindow(win, target) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1087 var doc = win.document;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1088 if (doc.getElementById(target))
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1089 return doc.getElementById(target);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1090 else if (doc.applets)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1091 return doc.applets[target];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1092 else
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1093 return doc[target];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1094 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1095
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1096 function _jmolAddScript(script) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1097 if (!script)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1098 return 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1099 var index = _jmol.scripts.length;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1100 _jmol.scripts[index] = script;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1101 return index;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1102 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1103
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1104 function _jmolClick(elementClicked, scriptIndex, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1105 _jmol.element = elementClicked;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1106 _jmolScriptExecute(elementClicked, _jmol.scripts[scriptIndex], targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1107 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1108
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1109 function _jmolMenuSelected(menuObject, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1110 var scriptIndex = menuObject.value;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1111 if (scriptIndex != undefined) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1112 _jmolScriptExecute(menuObject, _jmol.scripts[scriptIndex], targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1113 return;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1114 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1115 var len = menuObject.length;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1116 if (typeof len == "number") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1117 for (var i = 0; i < len; ++i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1118 if (menuObject[i].selected) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1119 _jmolClick(menuObject[i], menuObject[i].value, targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1120 return;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1121 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1122 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1123 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1124 alert("?Que? menu selected bug #8734");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1125 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1126
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1127
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1128 _jmol.checkboxMasters = {};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1129 _jmol.checkboxItems = {};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1130
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1131 function jmolSetCheckboxGroup(chkMaster,chkBox) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1132 var id = chkMaster;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1133 if(typeof(id)=="number")id = "jmolCheckbox" + id;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1134 chkMaster = document.getElementById(id);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1135 if (!chkMaster)alert("jmolSetCheckboxGroup: master checkbox not found: " + id);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1136 var m = _jmol.checkboxMasters[id] = {};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1137 m.chkMaster = chkMaster;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1138 m.chkGroup = {};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1139 for (var i = 1; i < arguments.length; i++){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1140 var id = arguments[i];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1141 if(typeof(id)=="number")id = "jmolCheckbox" + id;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1142 checkboxItem = document.getElementById(id);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1143 if (!checkboxItem)alert("jmolSetCheckboxGroup: group checkbox not found: " + id);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1144 m.chkGroup[id] = checkboxItem;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1145 _jmol.checkboxItems[id] = m;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1146 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1147 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1148
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1149 function _jmolNotifyMaster(m){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1150 //called when a group item is checked
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1151 var allOn = true;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1152 var allOff = true;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1153 for (var chkBox in m.chkGroup){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1154 if(m.chkGroup[chkBox].checked)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1155 allOff = false;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1156 else
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1157 allOn = false;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1158 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1159 if (allOn)m.chkMaster.checked = true;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1160 if (allOff)m.chkMaster.checked = false;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1161 if ((allOn || allOff) && _jmol.checkboxItems[m.chkMaster.id])
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1162 _jmolNotifyMaster(_jmol.checkboxItems[m.chkMaster.id])
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1163 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1164
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1165 function _jmolNotifyGroup(m, isOn){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1166 //called when a master item is checked
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1167 for (var chkBox in m.chkGroup){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1168 var item = m.chkGroup[chkBox]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1169 item.checked = isOn;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1170 if (_jmol.checkboxMasters[item.id])
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1171 _jmolNotifyGroup(_jmol.checkboxMasters[item.id], isOn)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1172 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1173 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1174
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1175 function _jmolCbClick(ckbox, whenChecked, whenUnchecked, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1176 _jmol.control = ckbox
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1177 _jmolClick(ckbox, ckbox.checked ? whenChecked : whenUnchecked, targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1178 if(_jmol.checkboxMasters[ckbox.id])
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1179 _jmolNotifyGroup(_jmol.checkboxMasters[ckbox.id], ckbox.checked)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1180 if(_jmol.checkboxItems[ckbox.id])
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1181 _jmolNotifyMaster(_jmol.checkboxItems[ckbox.id])
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1182 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1183
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1184 function _jmolCbOver(ckbox, whenChecked, whenUnchecked) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1185 window.status = _jmol.scripts[ckbox.checked ? whenUnchecked : whenChecked];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1186 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1187
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1188 function _jmolMouseOver(scriptIndex) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1189 window.status = _jmol.scripts[scriptIndex];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1190 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1191
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1192 function _jmolMouseOut() {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1193 window.status = " ";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1194 return true;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1195 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1196
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1197 function _jmolSetCodebase(codebase) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1198 _jmol.codebase = codebase ? codebase : ".";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1199 if (_jmol.debugAlert)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1200 alert("jmolCodebase=" + _jmol.codebase);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1201 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1202
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1203 function _jmolOnloadResetForms() {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1204 // must be evaluated ONLY once
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1205 _jmol.previousOnloadHandler = window.onload;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1206 window.onload =
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1207 function() {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1208 with (_jmol) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1209 if (buttonCount+checkboxCount+menuCount+radioCount+radioGroupCount > 0) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1210 var forms = document.forms;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1211 for (var i = forms.length; --i >= 0; )
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1212 forms[i].reset();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1213 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1214 if (previousOnloadHandler)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1215 previousOnloadHandler();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1216 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1217 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1218 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1219
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1220 ////////////////////////////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1221 /////extensions for getProperty/////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1222 ////////////////////////////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1223
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1224
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1225 function _jmolEvalJSON(s,key){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1226 s=s+""
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1227 if(!s)return []
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1228 if(s.charAt(0)!="{"){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1229 if(s.indexOf(" | ")>=0)s=s.replace(/\ \|\ /g, "\n")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1230 return s
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1231 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1232 var A = eval("("+s+")")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1233 if(!A)return
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1234 if(key && A[key])A=A[key]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1235 return A
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1236 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1237
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1238 function _jmolEnumerateObject(A,key){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1239 var sout=""
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1240 if(typeof(A) == "string" && A!="null"){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1241 sout+="\n"+key+"=\""+A+"\""
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1242 }else if(!isNaN(A)||A==null){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1243 sout+="\n"+key+"="+(A+""==""?"null":A)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1244 }else if(A.length){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1245 sout+=key+"=[]"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1246 for(var i=0;i<A.length;i++){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1247 sout+="\n"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1248 if(typeof(A[i]) == "object"||typeof(A[i]) == "array"){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1249 sout+=_jmolEnumerateObject(A[i],key+"["+i+"]")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1250 }else{
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1251 sout+=key+"["+i+"]="+(typeof(A[i]) == "string" && A[i]!="null"?"\""+A[i].replace(/\"/g,"\\\"")+"\"":A[i])
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1252 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1253 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1254 }else{
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1255 if(key != ""){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1256 sout+=key+"={}"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1257 key+="."
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1258 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1259
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1260 for(var i in A){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1261 sout+="\n"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1262 if(typeof(A[i]) == "object"||typeof(A[i]) == "array"){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1263 sout+=_jmolEnumerateObject(A[i],key+i)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1264 }else{
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1265 sout+=key+i+"="+(typeof(A[i]) == "string" && A[i]!="null"?"\""+A[i].replace(/\"/g,"\\\"")+"\"":A[i])
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1266 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1267 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1268 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1269 return sout
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1270 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1271
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1272
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1273 function _jmolSortKey0(a,b){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1274 return (a[0]<b[0]?1:a[0]>b[0]?-1:0)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1275 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1276
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1277 function _jmolSortMessages(A){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1278 if(!A || typeof(A)!="object")return []
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1279 var B = []
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1280 for(var i=A.length-1;i>=0;i--)for(var j=0;j<A[i].length;j++)B[B.length]=A[i][j]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1281 if(B.length == 0) return
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1282 B=B.sort(_jmolSortKey0)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1283 return B
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1284 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1285
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1286 /////////additional extensions //////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1287
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1288
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1289 function _jmolDomScriptLoad(URL){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1290 //open(URL) //to debug
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1291 _jmol.servercall=URL
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1292 var node = document.getElementById("_jmolScriptNode")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1293 if (node && _jmol.browser!="msie"){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1294 document.getElementsByTagName("HEAD")[0].removeChild(node)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1295 node=null
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1296 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1297 if (node) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1298 node.setAttribute("src",URL)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1299 } else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1300 node=document.createElement("script")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1301 node.setAttribute("id","_jmolScriptNode")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1302 node.setAttribute("type","text/javascript")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1303 node.setAttribute("src",URL)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1304 document.getElementsByTagName("HEAD")[0].appendChild(node)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1305 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1306 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1307
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1308
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1309 function _jmolExtractPostData(url){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1310 S=url.split("&POST:")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1311 var s=""
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1312 for(var i=1;i<S.length;i++){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1313 KV=S[i].split("=")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1314 s+="&POSTKEY"+i+"="+KV[0]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1315 s+="&POSTVALUE"+i+"="+KV[1]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1316 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1317 return "&url="+escape(S[0])+s
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1318 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1319
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1320 function _jmolLoadModel(targetSuffix,remoteURL,array,isError,errorMessage){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1321 //called by server, but in client
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1322 //overload this function to customize return
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1323 _jmol.remoteURL=remoteURL
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1324 isError && alert(errorMessage)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1325 jmolLoadInlineScript(array.join("\n"),_jmol.optionalscript,targetSuffix)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1326 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1327
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1328 //////////user property/status functions/////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1329
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1330 function jmolGetStatus(strStatus,targetSuffix){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1331 return _jmolSortMessages(jmolGetPropertyAsArray("jmolStatus",strStatus,targetSuffix))
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1332 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1333
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1334 function jmolGetPropertyAsArray(sKey,sValue,targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1335 return _jmolEvalJSON(jmolGetPropertyAsJSON(sKey,sValue,targetSuffix),sKey)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1336 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1337
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1338 function jmolGetPropertyAsString(sKey,sValue,targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1339 var applet = _jmolGetApplet(targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1340 sValue == undefined && (sValue="");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1341 return (applet ? applet.getPropertyAsString(sKey,sValue) + "" : "")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1342 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1343
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1344 function jmolGetPropertyAsJSON(sKey,sValue,targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1345 sValue == undefined && (sValue = "")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1346 var applet = _jmolGetApplet(targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1347 try {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1348 return (applet ? applet.getPropertyAsJSON(sKey,sValue) + "" : "")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1349 } catch(e) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1350 return ""
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1351 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1352 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1353
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1354 function jmolGetPropertyAsJavaObject(sKey,sValue,targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1355 sValue == undefined && (sValue = "")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1356 var applet = _jmolGetApplet(targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1357 return (applet ? applet.getProperty(sKey,sValue) : null)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1358 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1359
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1360
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1361 function jmolDecodeJSON(s) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1362 return _jmolEnumerateObject(_jmolEvalJSON(s),"")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1363 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1364
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1365
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1366 ///////// synchronous scripting ////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1367
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1368 function jmolScriptWait(script, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1369 targetSuffix == undefined && (targetSuffix="0")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1370 var Ret=jmolScriptWaitAsArray(script, targetSuffix)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1371 var s = ""
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1372 for(var i=Ret.length;--i>=0;)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1373 for(var j=0;j< Ret[i].length;j++)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1374 s+=Ret[i][j]+"\n"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1375 return s
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1376 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1377
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1378 function jmolScriptWaitOutput(script, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1379 targetSuffix == undefined && (targetSuffix="0")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1380 var ret = ""
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1381 try{
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1382 if (script) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1383 _jmolCheckBrowser();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1384 var applet=_jmolGetApplet(targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1385 if (applet) ret += applet.scriptWaitOutput(script);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1386 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1387 }catch(e){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1388 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1389 return ret;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1390 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1391
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1392 function jmolEvaluate(molecularMath, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1393
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1394 //carries out molecular math on a model
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1395
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1396 targetSuffix == undefined && (targetSuffix="0")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1397 var result = "" + jmolGetPropertyAsJavaObject("evaluate", molecularMath, targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1398 var s = result.replace(/\-*\d+/,"")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1399 if (s == "" && !isNaN(parseInt(result)))return parseInt(result);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1400 var s = result.replace(/\-*\d*\.\d*/,"")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1401 if (s == "" && !isNaN(parseFloat(result)))return parseFloat(result);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1402 return result;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1403 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1404
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1405 function jmolScriptEcho(script, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1406 // returns a newline-separated list of all echos from a script
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1407 targetSuffix == undefined && (targetSuffix="0")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1408 var Ret=jmolScriptWaitAsArray(script, targetSuffix)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1409 var s = ""
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1410 for(var i=Ret.length;--i>=0;)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1411 for(var j=Ret[i].length;--j>=0;)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1412 if (Ret[i][j][1] == "scriptEcho")s+=Ret[i][j][3]+"\n"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1413 return s.replace(/ \| /g, "\n")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1414 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1415
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1416
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1417 function jmolScriptMessage(script, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1418 // returns a newline-separated list of all messages from a script, ending with "script completed\n"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1419 targetSuffix == undefined && (targetSuffix="0")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1420 var Ret=jmolScriptWaitAsArray(script, targetSuffix)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1421 var s = ""
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1422 for(var i=Ret.length;--i>=0;)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1423 for(var j=Ret[i].length;--j>=0;)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1424 if (Ret[i][j][1] == "scriptStatus")s+=Ret[i][j][3]+"\n"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1425 return s.replace(/ \| /g, "\n")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1426 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1427
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1428
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1429 function jmolScriptWaitAsArray(script, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1430 var ret = ""
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1431 try{
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1432 jmolGetStatus("scriptEcho,scriptMessage,scriptStatus,scriptError",targetSuffix)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1433 if (script) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1434 _jmolCheckBrowser();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1435 var applet=_jmolGetApplet(targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1436 if (applet) ret += applet.scriptWait(script);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1437 ret = _jmolEvalJSON(ret,"jmolStatus")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1438 if(typeof ret == "object")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1439 return ret
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1440 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1441 }catch(e){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1442 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1443 return [[ret]]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1444 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1445
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1446
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1447
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1448 //////////// save/restore orientation /////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1449
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1450 function jmolSaveOrientation(id, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1451 targetSuffix == undefined && (targetSuffix="0")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1452 return _jmol["savedOrientation"+id] = jmolGetPropertyAsArray("orientationInfo","info",targetSuffix).moveTo
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1453 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1454
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1455 function jmolRestoreOrientation(id, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1456 targetSuffix == undefined && (targetSuffix="0")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1457 var s=_jmol["savedOrientation"+id]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1458 if (!s || s == "")return
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1459 s=s.replace(/1\.0/,"0")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1460 return jmolScriptWait(s,targetSuffix)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1461 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1462
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1463 function jmolRestoreOrientationDelayed(id, delay, targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1464 arguments.length < 2 && (delay=1)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1465 targetSuffix == undefined && (targetSuffix="0")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1466 var s=_jmol["savedOrientation"+id]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1467 if (!s || s == "")return
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1468 s=s.replace(/1\.0/,delay)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1469 return jmolScriptWait(s,targetSuffix)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1470 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1471
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1472 //////////// add parameter /////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1473 /*
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1474 * for adding callbacks or other parameters. Use:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1475
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1476 jmolSetDocument(0)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1477 var s= jmolApplet(....)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1478 s = jmolAppletAddParam(s,"messageCallback", "myFunctionName")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1479 document.write(s)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1480 jmolSetDocument(document) // if you want to then write buttons and such normally
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1481
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1482 */
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1483
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1484 function jmolAppletAddParam(appletCode,name,value){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1485 return (value == "" ? appletCode : appletCode.replace(/\<param/,"\n<param name='"+name+"' value='"+value+"' />\n<param"))
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1486 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1487
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1488 ///////////////auto load Research Consortium for Structural Biology (RCSB) data ///////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1489
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1490 function jmolLoadAjax_STOLAF_RCSB(fileformat,pdbid,optionalscript,targetSuffix){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1491
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1492 _jmol.thismodel || (_jmol.thismodel = "1crn")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1493 _jmol.serverURL || (_jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1494 _jmol.RCSBserver || (_jmol.RCSBserver="http://www.rcsb.org")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1495 _jmol.defaultURL_RCSB || (_jmol.defaultURL_RCSB=_jmol.RCSBserver+"/pdb/files/1CRN.CIF")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1496 fileformat || (fileformat="PDB")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1497 pdbid || (pdbid=prompt("Enter a 4-digit PDB ID:",_jmol.thismodel))
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1498 if(!pdbid || pdbid.length != 4)return ""
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1499 targetSuffix || (targetSuffix="0")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1500 optionalscript || (optionalscript="")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1501 var url=_jmol.defaultURL_RCSB.replace(/1CRN/g,pdbid.toUpperCase())
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1502 fileformat=="CIF" || (url=url.replace(/CIF/,fileformat))
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1503 _jmol.optionalscript=optionalscript
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1504 _jmol.thismodel=pdbid
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1505 _jmol.thistargetsuffix=targetSuffix
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1506 _jmol.thisurl=url
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1507 _jmol.modelArray = []
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1508 url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1509 _jmolDomScriptLoad(url)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1510 return url
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1511 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1512
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1513 /////////////// St. Olaf College AJAX server -- ANY URL ///////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1514
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1515 function jmolLoadAjax_STOLAF_ANY(url, userid, optionalscript,targetSuffix){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1516 _jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1517 _jmol.thisurlANY || (_jmol.thisurlANY = "http://www.stolaf.edu/depts/chemistry/mo/struc/data/ycp3-1.mol")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1518 url || (url=prompt("Enter any (uncompressed file) URL:", _jmol.thisurlANY))
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1519 userid || (userid="0")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1520 targetSuffix || (targetSuffix="0")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1521 optionalscript || (optionalscript="")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1522 _jmol.optionalscript=optionalscript
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1523 _jmol.thistargetsuffix=targetSuffix
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1524 _jmol.modelArray = []
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1525 _jmol.thisurl = url
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1526 url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1527 _jmolDomScriptLoad(url)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1528 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1529
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1530
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1531 /////////////// Mineralogical Society of America (MSA) data /////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1532
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1533 function jmolLoadAjax_MSA(key,value,optionalscript,targetSuffix){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1534
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1535 _jmol.thiskeyMSA || (_jmol.thiskeyMSA = "mineral")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1536 _jmol.thismodelMSA || (_jmol.thismodelMSA = "quartz")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1537 _jmol.ajaxURL_MSA || (_jmol.ajaxURL_MSA="http://rruff.geo.arizona.edu/AMS/result.php?mineral=quartz&viewing=ajaxjs")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1538 key || (key=prompt("Enter a field:", _jmol.thiskeyMSA))
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1539 if(!key)return ""
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1540 value || (value=prompt("Enter a "+key+":", _jmol.thismodelMSA))
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1541 if(!value)return ""
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1542 targetSuffix || (targetSuffix="0")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1543 optionalscript || (optionalscript="")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1544 optionalscript == 1 && (optionalscript='load "" {1 1 1}')
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1545 var url=_jmol.ajaxURL_MSA.replace(/mineral/g,key).replace(/quartz/g,value)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1546 _jmol.optionalscript=optionalscript
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1547 _jmol.thiskeyMSA=key
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1548 _jmol.thismodelMSA=value
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1549 _jmol.thistargetsuffix=targetSuffix
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1550 _jmol.thisurl=url
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1551 _jmol.modelArray = []
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1552 loadModel=_jmolLoadModel
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1553 _jmolDomScriptLoad(url)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1554 return url
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1555 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1556
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1557
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1558
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1559 function jmolLoadAjaxJS(url, userid, optionalscript,targetSuffix){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1560 userid || (userid="0")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1561 targetSuffix || (targetSuffix="0")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1562 optionalscript || (optionalscript="")
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1563 _jmol.optionalscript=optionalscript
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1564 _jmol.thismodel=userid
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1565 _jmol.thistargetsuffix=targetSuffix
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1566 _jmol.modelArray = []
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1567 _jmol.thisurl = url
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1568 url+="&returnFunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1569 _jmolDomScriptLoad(url)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1570 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1571
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1572
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1573 //// in case Jmol library has already been loaded:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1574
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1575 }catch(e){}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1576
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1577 ///////////////moving atoms //////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1578
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1579 // HIGHLY experimental!!
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1580
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1581 function jmolSetAtomCoord(i,x,y,z,targetSuffix){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1582 _jmolCheckBrowser();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1583 var applet=_jmolGetApplet(targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1584 if (applet) applet.getProperty('jmolViewer').setAtomCoord(i,x,y,z)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1585 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1586
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1587 function jmolSetAtomCoordRelative(i,x,y,z,targetSuffix){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1588 _jmolCheckBrowser();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1589 var applet=_jmolGetApplet(targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1590 if (applet) applet.getProperty('jmolViewer').setAtomCoordRelative(i,x,y,z)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1591 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1592
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1593
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1594 ///////////////applet fake for testing buttons/////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1595
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1596
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1597 if(_jmol.useNoApplet){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1598 jmolApplet = function(w){
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1599 var s="<table style='background-color:black' width="+w+"><tr height="+w+">"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1600 +"<td align=center valign=center style='background-color:white'>"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1601 +"Applet would be here"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1602 +"<p><textarea id=fakeApplet rows=5 cols=50></textarea>"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1603 +"</td></tr></table>"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1604 return _jmolDocumentWrite(s)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1605 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1606
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1607 _jmolFindApplet = function(){return jmolApplet0}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1608
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1609 jmolApplet0 = {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1610 script: function(script){document.getElementById("fakeApplet").value="\njmolScript:\n"+script}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1611 ,scriptWait: function(script){document.getElementById("fakeApplet").value="\njmolScriptWait:\n"+script}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1612 ,loadInline: function(data,script){document.getElementById("fakeApplet").value="\njmolLoadInline data:\n"+data+"\n\nscript:\n"+script}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1613 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1614 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1615
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1616
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1617 ///////////////////////////////////////////
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1618
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1619 // This should no longer be needed, jmolResizeApplet() is better; kept for backwards compatibility
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1620 /*
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1621 Resizes absolutely (pixels) or by percent of window (w or h 0.5 means 50%).
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1622 targetSuffix is optional and defaults to zero (first applet in page).
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1623 Both w and h are optional, but needed if you want to use targetSuffix.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1624 h defaults to w
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1625 w defaults to 100% of window
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1626 If either w or h is between 0 and 1, then it is taken as percent/100.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1627 If either w or h is greater than 1, then it is taken as a size (pixels).
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1628 */
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1629 function jmolResize(w,h,targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1630 _jmol.alerted = true;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1631 var percentW = (!w ? 100 : w <= 1 && w > 0 ? w * 100 : 0);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1632 var percentH = (!h ? percentW : h <= 1 && h > 0 ? h * 100 : 0);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1633 if (_jmol.browser=="msie") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1634 var width=document.body.clientWidth;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1635 var height=document.body.clientHeight;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1636 } else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1637 var netscapeScrollWidth=15;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1638 var width=window.innerWidth - netscapeScrollWidth;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1639 var height=window.innerHeight-netscapeScrollWidth;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1640 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1641 var applet = _jmolGetApplet(targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1642 if(!applet)return;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1643 applet.style.width = (percentW ? width * percentW/100 : w)+"px";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1644 applet.style.height = (percentH ? height * percentH/100 : (h ? h : w))+"px";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1645 //title=width + " " + height + " " + (new Date());
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1646 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1647
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1648 // 13 Jun 09 -- makes jmolResize() obsolete (kept for backwards compatibility)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1649 function jmolResizeApplet(size,targetSuffix) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1650 // See _jmolGetAppletSize() for the formats accepted as size [same used by jmolApplet()]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1651 // Special case: an empty value for width or height is accepted, meaning no change in that dimension.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1652 _jmol.alerted = true;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1653 var applet = _jmolGetApplet(targetSuffix);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1654 if(!applet)return;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1655 var sz = _jmolGetAppletSize(size, "px");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1656 sz[0] && (applet.style.width = sz[0]);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1657 sz[1] && (applet.style.height = sz[1]);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1658 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1659
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1660 function _jmolGetAppletSize(size, units) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1661 /* Accepts single number or 2-value array, each one can be one of:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1662 percent (text string ending %), decimal 0 to 1 (percent/100), number, or text string (interpreted as nr.)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1663 [width, height] array of strings is returned, with units added if specified.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1664 Percent is relative to container div or element (which should have explicitly set size).
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1665 */
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1666 var width, height;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1667 if ( (typeof size) == "object" && size != null ) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1668 width = size[0]; height = size[1];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1669 } else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1670 width = height = size;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1671 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1672 return [_jmolFixDim(width, units), _jmolFixDim(height, units)];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1673 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1674
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1675 function _jmolFixDim(x, units) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1676 var sx = "" + x;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1677 return (sx.length == 0 ? (units ? "" : _jmol.allowedJmolSize[2])
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1678 : sx.indexOf("%") == sx.length-1 ? sx
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1679 : (x = parseFloat(x)) <= 1 && x > 0 ? x * 100 + "%"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1680 : (isNaN(x = Math.floor(x)) ? _jmol.allowedJmolSize[2]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1681 : x < _jmol.allowedJmolSize[0] ? _jmol.allowedJmolSize[0]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1682 : x > _jmol.allowedJmolSize[1] ? _jmol.allowedJmolSize[1]
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1683 : x) + (units ? units : ""));
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1684 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1685
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1686
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1687
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1688