diff --git a/JMolViewer/jmol.htm b/JMolViewer/jmol.htm
new file mode 100644
index 0000000000..5daf397b47
--- /dev/null
+++ b/JMolViewer/jmol.htm
@@ -0,0 +1,20 @@
+
+ JMol Example
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/JMolViewer/jmol/Jmol.js b/JMolViewer/jmol/Jmol.js
new file mode 100644
index 0000000000..3c696b3ca0
--- /dev/null
+++ b/JMolViewer/jmol/Jmol.js
@@ -0,0 +1,1659 @@
+/* Jmol 12.0 script library Jmol.js 9:48 PM 1/31/2011 Bob Hanson
+
+ checkbox heirarchy -- see http://chemapps.stolaf.edu/jmol/docs/examples-11/check.htm
+
+ based on:
+ *
+ * Copyright (C) 2004-2005 Miguel, Jmol Development, www.jmol.org
+ *
+ * Contact: hansonr@stolaf.edu
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA.
+ */
+
+// for documentation see www.jmol.org/jslibrary
+
+try{if(typeof(_jmol)!="undefined")exit()
+
+// place "?NOAPPLET" on your command line to check applet control action with a textarea
+// place "?JMOLJAR=xxxxx" to use a specific jar file
+
+// bob hanson -- jmolResize(w,h) -- resizes absolutely or by percent (w or h 0.5 means 50%)
+// angel herraez -- update of jmolResize(w,h,targetSuffix) so it is not tied to first applet
+// bob hanson -- jmolEvaluate -- evaluates molecular math 8:37 AM 2/23/2007
+// bob hanson -- jmolScriptMessage -- returns all "scriptStatus" messages 8:37 AM 2/23/2007
+// bob hanson -- jmolScriptEcho -- returns all "scriptEcho" messages 8:37 AM 2/23/2007
+// bob hanson -- jmolScriptWait -- 11:31 AM 5/2/2006
+// bob hanson -- remove trailing separatorHTML in radio groups -- 12:18 PM 5/6/2006
+// bob hanson -- adds support for dynamic DOM script nodes 7:04 AM 5/19/2006
+// bob hanson -- adds try/catch for wiki - multiple code passes 7:05 AM 5/19/2006
+// bob hanson -- auto-initiates to defaultdir/defaultjar -- change as desired.
+// bob hanson -- adding save/restore orientation w/ and w/o delay 11:49 AM 5/25/2006
+// bob hanson -- adding AjaxJS service 11:16 AM 6/3/2006
+// bob hanson -- fix for iframes not available for finding applet
+// bob hanson -- added applet fake ?NOAPPLET URL flag
+// bob hanson -- added jmolSetCallback(calbackName, funcName) 3:32 PM 6/13/2006
+// used PRIOR to jmolApplet() or jmolAppletInline()
+// added 4th array element in jmolRadioGroup -- title
+// added and id around link, checkbox, radio, menu
+// fixing AJAX loads for MSIE/Opera-Mozilla incompatibility
+// -- renamed Jmol-11.js from Jmol-new.js; JmolApplet.jar from JmolAppletProto.jar
+// renamed Jmol.js for Jmol 11 distribution
+// -- modified jmolRestoreOrientation() to be immediate, no 1-second delay
+// bob hanson -- jmolScriptWait always returns a string -- 11:23 AM 9/16/2006
+// bh -- jmolCommandInput()
+// bh -- jmolSetTranslation(TF) -- forces translation even if there might be message callback issues
+// bh -- minor fixes suggested by Angel
+// bh -- adds jmolSetSyncId() and jmolGetSyncId()
+// bh 3/2008 -- adds jmolAppendInlineScript() and jmolAppendInlineArray()
+// bh 3/2008 -- fixes IE7 bug in relation to jmolLoadInlineArray()
+// bh 6/2008 -- adds jmolSetAppletWindow()
+// Angel H. 6/2008 -- added html tags to checkboxes and radio buttons [in jmolCheckbox() and _jmolRadio() functions]
+// bh 7/2008 -- code fix "for(i..." not "for(var i..."
+// bh 12/2008 -- jmolLoadInline, jmolLoadInlineArray, jmolLoadInlineScript, jmolAppendInlineScript, jmolAppendInlineArray all return error message or null (Jmol 11.7.16)
+// bh 12/2008 -- jmolScriptWaitOutput() -- waits for script to complete and delivers output normally sent to console
+
+// bh 5/2009 -- Support for XHTML using jmolSetXHTML(id)
+// ah & bh 6/2009 -- New jmolResizeApplet() more flexible, similar to jmolApplet() size syntax
+// bh 11/2009 -- care in accessing top.document
+// bh 12/2009 -- added jmolSetParameter(name, value)
+// bh 12/2009 -- added PARAMS=name:value;name:value;name:value... for command line
+// bh 12/2009 -- overhaul of target checking
+// bh 1/2010 -- all _xxxx() methods ALWAYS have complete argument list
+// bh 1/2010 -- adds option to run a JavaScript function from any Jmol control.
+// This is accomplished by passing an array rather than a script:
+// jmolHref([myfunc,"my param 1", "my param 2"], "testing")
+// function myfunc(jmolControlObject, [myfunc,"my param 1", "my param 2"], target){...}
+// and allows much more flexibility with responding to controls
+// bh 4/2010 -- added jmolSetMemoryMb(nMb)
+// ah 1/2011 -- wider detection of browsers; more browsers now use the object tag instead of the applet tag;
+// fix of object tag (removed classid) accounts for change of behavior in Chrome
+
+var defaultdir = "."
+var defaultjar = "JmolApplet.jar"
+
+
+// Note added 12:41 PM 9/21/2008 by Bob Hanson, hansonr@stolaf.edu:
+
+// JMOLJAR=xxxxx.jar on the URL for this page will override
+// the JAR file specified in the jmolInitialize() call.
+
+// The idea is that it can be very useful to test a web page with different JAR files
+// Or for an expert user to substitute a signed applet for an unsigned one
+// so as to use a broader range of models or to create JPEG files, for example.
+
+// If the JAR file is not in the current directory (has any sort of "/" in its name)
+// then the user is presented with a warning and asked whether it is OK to change Jar files.
+// The default action, if the user just presses "OK" is to NOT allow the change.
+// The user must type the word "yes" in the prompt box for the change to be approved.
+
+// If you don't want people to be able to switch in their own JAR file on your page,
+// simply set this next line to read "var allowJMOLJAR = false".
+
+
+var undefined; // for IE 5 ... wherein undefined is undefined
+
+////////////////////////////////////////////////////////////////
+// Basic Scripting infrastruture
+////////////////////////////////////////////////////////////////
+
+function jmolInitialize(codebaseDirectory, fileNameOrUseSignedApplet) {
+ if (_jmol.initialized)
+ return;
+ _jmol.initialized = true;
+ if(_jmol.jmoljar) {
+ var f = _jmol.jmoljar;
+ if (f.indexOf("/") >= 0) {
+ 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.")
+ var ok = prompt("Do you want to use applet " + f + "? ","yes or no")
+ if (ok == "yes") {
+ codebaseDirectory = f.substring(0, f.lastIndexOf("/"));
+ fileNameOrUseSignedApplet = f.substring(f.lastIndexOf("/") + 1);
+ } else {
+ _jmolGetJarFilename(fileNameOrUseSignedApplet);
+ alert("The web page URL was ignored. Continuing using " + _jmol.archivePath + ' in directory "' + codebaseDirectory + '"');
+ }
+ } else {
+ fileNameOrUseSignedApplet = f;
+ }
+ }
+ _jmolSetCodebase(codebaseDirectory);
+ _jmolGetJarFilename(fileNameOrUseSignedApplet);
+ _jmolOnloadResetForms();
+}
+
+function jmolSetTranslation(TF) {
+ _jmol.params.doTranslate = ''+TF;
+}
+
+function _jmolGetJarFilename(fileNameOrFlag) {
+ _jmol.archivePath =
+ (typeof(fileNameOrFlag) == "string" ? fileNameOrFlag : (fileNameOrFlag ? "JmolAppletSigned" : "JmolApplet") + "0.jar");
+}
+
+function jmolSetDocument(doc) {
+ _jmol.currentDocument = doc;
+}
+
+function jmolSetAppletColor(boxbgcolor, boxfgcolor, progresscolor) {
+ _jmolInitCheck();
+ _jmol.params.boxbgcolor = boxbgcolor;
+ if (boxfgcolor)
+ _jmol.params.boxfgcolor = boxfgcolor
+ else if (boxbgcolor == "white" || boxbgcolor == "#FFFFFF")
+ _jmol.params.boxfgcolor = "black";
+ else
+ _jmol.params.boxfgcolor = "white";
+ if (progresscolor)
+ _jmol.params.progresscolor = progresscolor;
+ if (_jmol.debugAlert)
+ alert(" boxbgcolor=" + _jmol.params.boxbgcolor +
+ " boxfgcolor=" + _jmol.params.boxfgcolor +
+ " progresscolor=" + _jmol.params.progresscolor);
+}
+
+function jmolSetAppletWindow(w) {
+ _jmol.appletWindow = w;
+}
+
+function jmolApplet(size, script, nameSuffix) {
+ _jmolInitCheck();
+ return _jmolApplet(size, null, script, nameSuffix);
+}
+
+////////////////////////////////////////////////////////////////
+// Basic controls
+////////////////////////////////////////////////////////////////
+
+// undefined means it wasn't there; null means it was explicitly listed as null (so as to skip it)
+
+function jmolButton(script, label, id, title) {
+ _jmolInitCheck();
+ id != undefined && id != null || (id = "jmolButton" + _jmol.buttonCount);
+ label != undefined && label != null || (label = script.substring(0, 32));
+ ++_jmol.buttonCount;
+ var scriptIndex = _jmolAddScript(script);
+ var t = " ";
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+function jmolCheckbox(scriptWhenChecked, scriptWhenUnchecked,
+ labelHtml, isChecked, id, title) {
+ _jmolInitCheck();
+ id != undefined && id != null || (id = "jmolCheckbox" + _jmol.checkboxCount);
+ ++_jmol.checkboxCount;
+ if (scriptWhenChecked == undefined || scriptWhenChecked == null ||
+ scriptWhenUnchecked == undefined || scriptWhenUnchecked == null) {
+ alert("jmolCheckbox requires two scripts");
+ return;
+ }
+ if (labelHtml == undefined || labelHtml == null) {
+ alert("jmolCheckbox requires a label");
+ return;
+ }
+ var indexChecked = _jmolAddScript(scriptWhenChecked);
+ var indexUnchecked = _jmolAddScript(scriptWhenUnchecked);
+ var eospan = " "
+ var t = " "
+ if (labelHtml.toLowerCase().indexOf("")>=0) {
+ t += eospan
+ eospan = "";
+ }
+ t += "" + labelHtml + " " +eospan;
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+function jmolStartNewRadioGroup() {
+ ++_jmol.radioGroupCount;
+}
+
+function jmolRadioGroup(arrayOfRadioButtons, separatorHtml, groupName, id, title) {
+ /*
+
+ array: [radio1,radio2,radio3...]
+ where radioN = ["script","label",isSelected,"id","title"]
+
+ */
+
+ _jmolInitCheck();
+ var type = typeof arrayOfRadioButtons;
+ if (type != "object" || type == null || ! arrayOfRadioButtons.length) {
+ alert("invalid arrayOfRadioButtons");
+ return;
+ }
+ separatorHtml != undefined && separatorHtml != null || (separatorHtml = " ");
+ var len = arrayOfRadioButtons.length;
+ jmolStartNewRadioGroup();
+ groupName || (groupName = "jmolRadioGroup" + (_jmol.radioGroupCount - 1));
+ var t = "";
+ for (var i = 0; i < len; ++i) {
+ if (i == len - 1)
+ separatorHtml = "";
+ var radio = arrayOfRadioButtons[i];
+ type = typeof radio;
+ if (type == "object") {
+ 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);
+ } else {
+ t += _jmolRadio(radio, null, null, separatorHtml, groupName, (id ? id : groupName)+"_"+i, title);
+ }
+ }
+ t+=" "
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+
+function jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, id, title) {
+ _jmolInitCheck();
+ if (_jmol.radioGroupCount == 0)
+ ++_jmol.radioGroupCount;
+ var t = _jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, (id ? id : groupName + "_" + _jmol.radioCount), title ? title : 0);
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+function jmolLink(script, label, id, title) {
+ _jmolInitCheck();
+ id != undefined && id != null || (id = "jmolLink" + _jmol.linkCount);
+ label != undefined && label != null || (label = script.substring(0, 32));
+ ++_jmol.linkCount;
+ var scriptIndex = _jmolAddScript(script);
+ var t = "" + label + " ";
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+function jmolCommandInput(label, size, id, title) {
+ _jmolInitCheck();
+ id != undefined && id != null || (id = "jmolCmd" + _jmol.cmdCount);
+ label != undefined && label != null || (label = "Execute");
+ size != undefined && !isNaN(size) || (size = 60);
+ ++_jmol.cmdCount;
+ var t = " ";
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+}
+
+function _jmolCommandKeyPress(e, id, target) {
+ var keycode = (window.event ? window.event.keyCode : e ? e.which : 0);
+ if (keycode == 13) {
+ var inputBox = document.getElementById(id)
+ _jmolScriptExecute(inputBox, inputBox.value, target)
+ }
+}
+
+function _jmolScriptExecute(element,script,target) {
+ if (typeof(script) == "object")
+ script[0](element, script, target)
+ else
+ jmolScript(script, target)
+}
+
+function jmolMenu(arrayOfMenuItems, size, id, title) {
+ _jmolInitCheck();
+ id != undefined && id != null || (id = "jmolMenu" + _jmol.menuCount);
+ ++_jmol.menuCount;
+ var type = typeof arrayOfMenuItems;
+ if (type != null && type == "object" && arrayOfMenuItems.length) {
+ var len = arrayOfMenuItems.length;
+ if (typeof size != "number" || size == 1)
+ size = null;
+ else if (size < 0)
+ size = len;
+ var sizeText = size ? " size='" + size + "' " : "";
+ var t = "";
+ for (var i = 0; i < len; ++i) {
+ var menuItem = arrayOfMenuItems[i];
+ type = typeof menuItem;
+ var script, text;
+ var isSelected = undefined;
+ if (type == "object" && menuItem != null) {
+ script = menuItem[0];
+ text = menuItem[1];
+ isSelected = menuItem[2];
+ } else {
+ script = text = menuItem;
+ }
+ text != undefined && text != null || (text = script);
+ if (script=="#optgroup") {
+ t += "";
+ } else if (script=="#optgroupEnd") {
+ t += " ";
+ } else {
+ var scriptIndex = _jmolAddScript(script);
+ var selectedText = isSelected ? "' selected='true'>" : "'>";
+ t += "= 5.5);
+ useHtml4Object =
+ (browser == "mozilla" && browserVersion >= 5) ||
+ (browser == "opera" && browserVersion >= 8) ||
+ (browser == "webkit" && browserVersion >= 412.2);
+ try {
+ if (top.location.search.indexOf("JMOLJAR=")>=0)
+ jmoljar = top.location.search.split("JMOLJAR=")[1].split("&")[0];
+ } catch(e) {
+ // can't access top.location
+ }
+ try {
+ useNoApplet = (top.location.search.indexOf("NOAPPLET")>=0);
+ } catch(e) {
+ // can't access top.document
+ }
+}
+
+function jmolSetMemoryMb(nMb) {
+ _jmol.java_arguments = "-Xmx" + Math.round(nMb) + "m"
+}
+
+function jmolSetParameter(name,value) {
+ _jmol.params[name] = value
+}
+
+function jmolSetCallback(callbackName,funcName) {
+ _jmol.params[callbackName] = funcName
+}
+
+ try {
+// note this is done FIRST, so it cannot override a setting done by the developer
+ if (top.location.search.indexOf("PARAMS=")>=0) {
+ var pars = unescape(top.location.search.split("PARAMS=")[1].split("&")[0]).split(";");
+ for (var i = 0; i < pars.length; i++) {
+ var p = pars[i].split(":");
+ jmolSetParameter(p[0],p[1]);
+ }
+ }
+ } catch(e) {
+ // can't access top.location
+ }
+
+function jmolSetSyncId(n) {
+ return _jmol.params["syncId"] = n
+}
+
+function jmolGetSyncId() {
+ return _jmol.params["syncId"]
+}
+
+function jmolSetLogLevel(n) {
+ _jmol.params.logLevel = ''+n;
+}
+
+ /* AngelH, mar2007:
+ By (re)setting these variables in the webpage before calling jmolApplet(),
+ a custom message can be provided (e.g. localized for user's language) when no Java is installed.
+ */
+if (noJavaMsg==undefined) var noJavaMsg =
+ "You do not have Java applets enabled in your web browser, or your browser is blocking this applet. \n" +
+ "Check the warning message from your browser and/or enable Java applets in \n" +
+ "your web browser preferences, or install the Java Runtime Environment from www.java.com ";
+if (noJavaMsg2==undefined) var noJavaMsg2 =
+ "You do not have the \n" +
+ "Java Runtime Environment \n" +
+ "installed for applet support. \n" +
+ "Visit www.java.com ";
+function _jmolApplet(size, inlineModel, script, nameSuffix) {
+ /* AngelH, mar2007
+ Fixed percent / pixel business, to avoid browser errors:
+ put "px" where needed, avoid where not.
+
+ Bob Hanson, 1/2010
+ Fixed inline escape changing returns to |
+ */
+ with (_jmol) {
+ nameSuffix == undefined && (nameSuffix = appletCount);
+ appletSuffixes.push(nameSuffix);
+ ++appletCount;
+ script || (script = "select *");
+ var sz = _jmolGetAppletSize(size);
+ var widthAndHeight = " width='" + sz[0] + "' height='" + sz[1] + "' ";
+ var tHeader, tFooter;
+ codebase || jmolInitialize(".");
+ if (useIEObject || useHtml4Object) {
+ params.archive = archivePath;
+ params.mayscript = 'true';
+ params.codebase = codebase;
+ params.code = 'JmolApplet';
+ tHeader =
+ "\n";
+ } else if (useHtml4Object) { // use HTML4 object tag
+ tHeader += " type='application/x-java-applet'\n>\n";
+ /* " classid='java:JmolApplet'\n" + AH removed this
+ Chromium Issue 62076: Java Applets using an with a classid paramater don't load.
+ http://code.google.com/p/chromium/issues/detail?id=62076
+ They say this is the correct behavior according to the spec, and there's no indication at this point
+ that WebKit will be changing the handling, so eventually Safari will acquire this behavior too.
+ Removing the classid parameter seems to be well tolerated by all browsers (even IE!).
+ */
+ } else { // use applet tag
+ tHeader =
+ "\n";
+ tFooter = " ";
+ }
+ var visitJava;
+ if (useIEObject || useHtml4Object) {
+ var szX = "width:" + sz[0]
+ if ( szX.indexOf("%")==-1 ) szX+="px"
+ var szY = "height:" + sz[1]
+ if ( szY.indexOf("%")==-1 ) szY+="px"
+ visitJava =
+ "\n" +
+ noJavaMsg +
+ "
";
+ } else {
+ visitJava =
+ "" +
+ "\n" +
+ noJavaMsg2 +
+ "
";
+ }
+ params.loadInline = (inlineModel ? inlineModel : "");
+ params.script = (script ? _jmolSterilizeScript(script) : "");
+ var t = tHeader + _jmolParams() + visitJava + tFooter;
+ jmolSetTarget(nameSuffix);
+ ready["jmolApplet" + nameSuffix] = false;
+ if (_jmol.debugAlert)
+ alert(t);
+ return _jmolDocumentWrite(t);
+ }
+}
+
+function _jmolParams() {
+ var t = "";
+ for (var i in _jmol.params)
+ if(_jmol.params[i]!="")
+ t+=" \n";
+ return t
+}
+
+function _jmolInitCheck() {
+ if (_jmol.initChecked)
+ return;
+ _jmol.initChecked = true;
+ jmolInitialize(defaultdir, defaultjar)
+}
+
+function _jmolCheckBrowser() {
+ with (_jmol) {
+ if (browserChecked)
+ return;
+ browserChecked = true;
+
+ if (isFullyCompliant)
+ return true;
+
+ if (checkBrowserAction == "redirect")
+ location.href = checkBrowserUrlOrMessage;
+ else if (checkBrowserAction == "popup")
+ _jmolPopup(checkBrowserUrlOrMessage);
+ else {
+ var msg = checkBrowserUrlOrMessage;
+ if (msg == null)
+ msg = "Your web browser is not fully compatible with Jmol\n\n" +
+ "browser: " + browser +
+ " version: " + browserVersion +
+ " os: " + os +
+ " isBrowserCompliant: " + isBrowserCompliant +
+ " isJavaCompliant: " + isJavaCompliant +
+ "\n\n" + ua;
+ alert(msg);
+ }
+ }
+ return false;
+}
+
+function jmolSetXHTML(id) {
+ _jmol.isXHTML = true
+ _jmol.XhtmlElement = null
+ _jmol.XhtmlAppendChild = false
+ if (id){
+ _jmol.XhtmlElement = document.getElementById(id)
+ _jmol.XhtmlAppendChild = true
+ }
+}
+
+function _jmolDocumentWrite(text) {
+ if (_jmol.currentDocument) {
+ if (_jmol.isXHTML && !_jmol.XhtmlElement) {
+ var s = document.getElementsByTagName("script")
+ _jmol.XhtmlElement = s.item(s.length - 1)
+ _jmol.XhtmlAppendChild = false
+ }
+ if (_jmol.XhtmlElement) {
+ _jmolDomDocumentWrite(text)
+ } else {
+ _jmol.currentDocument.write(text);
+ }
+ }
+ return text;
+}
+
+function _jmolDomDocumentWrite(data) {
+ var pt = 0
+ var Ptr = []
+ Ptr[0] = 0
+ while (Ptr[0] < data.length) {
+ var child = _jmolGetDomElement(data, Ptr)
+ if (!child)break
+ if (_jmol.XhtmlAppendChild)
+ _jmol.XhtmlElement.appendChild(child)
+ else
+ _jmol.XhtmlElement.parentNode.insertBefore(child, _jmol.XhtmlElement);
+ }
+}
+function _jmolGetDomElement(data, Ptr, closetag, lvel) {
+ var e = document.createElement("span")
+ e.innerHTML = data
+ Ptr[0] = data.length
+ return e
+
+//unnecessary?
+
+ closetag || (closetag = "")
+ lvel || (lvel = 0)
+ var pt0 = Ptr[0]
+ var pt = pt0
+ while (pt < data.length && data.charAt(pt) != "<") pt++
+ if (pt != pt0) {
+ var text = data.substring(pt0, pt)
+ Ptr[0] = pt
+ return document.createTextNode(text)
+ }
+ pt0 = ++pt
+ var ch
+ while (pt < data.length && "\n\r\t >".indexOf(ch = data.charAt(pt)) < 0) pt++
+ var tagname = data.substring(pt0, pt)
+ var e = (tagname == closetag || tagname == "/" ? ""
+ : document.createElementNS ? document.createElementNS('http://www.w3.org/1999/xhtml', tagname)
+ : document.createElement(tagname));
+ if (ch == ">") {
+ Ptr[0] = ++pt
+ return e
+ }
+ while (pt < data.length && (ch = data.charAt(pt)) != ">") {
+ while (pt < data.length && "\n\r\t ".indexOf(ch = data.charAt(pt)) >= 0) pt++
+ pt0 = pt
+ while (pt < data.length && "\n\r\t =/>".indexOf(ch = data.charAt(pt)) < 0) pt++
+ var attrname = data.substring(pt0, pt).toLowerCase()
+ if (attrname && ch != "=")
+ e.setAttribute(attrname, "true")
+ while (pt < data.length && "\n\r\t ".indexOf(ch = data.charAt(pt)) >= 0) pt++
+ if (ch == "/") {
+ Ptr[0] = pt + 2
+ return e
+ } else if (ch == "=") {
+ var quote = data.charAt(++pt)
+ pt0 = ++pt
+ while (pt < data.length && (ch = data.charAt(pt)) != quote) pt++
+ var attrvalue = data.substring(pt0, pt)
+ e.setAttribute(attrname, attrvalue)
+ pt++
+ }
+ }
+ Ptr[0] = ++pt
+ while (Ptr[0] < data.length) {
+ var child = _jmolGetDomElement(data, Ptr, "/" + tagname, lvel+1)
+ if (!child)break
+ e.appendChild(child)
+ }
+ return e
+}
+
+function _jmolPopup(url) {
+ var popup = window.open(url, "JmolPopup",
+ "left=150,top=150,height=400,width=600," +
+ "directories=yes,location=yes,menubar=yes," +
+ "toolbar=yes," +
+ "resizable=yes,scrollbars=yes,status=yes");
+ if (popup.focus)
+ poup.focus();
+}
+
+function _jmolReadyCallback(name) {
+ if (_jmol.debugAlert)
+ alert(name + " is ready");
+ _jmol.ready["" + name] = true;
+}
+
+function _jmolSterilizeScript(script) {
+ script = script.replace(/'/g, "'");
+ if (_jmol.debugAlert)
+ alert("script:\n" + script);
+ return script;
+}
+
+function _jmolSterilizeInline(model) {
+ model = model.replace(/\r|\n|\r\n/g, (model.indexOf("|") >= 0 ? "\\/n" : "|")).replace(/'/g, "'");
+ if (_jmol.debugAlert)
+ alert("inline model:\n" + model);
+ return model;
+}
+
+function _jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, id, title) {
+ ++_jmol.radioCount;
+ groupName != undefined && groupName != null || (groupName = "jmolRadioGroup" + (_jmol.radioGroupCount - 1));
+ if (!script)
+ return "";
+ labelHtml != undefined && labelHtml != null || (labelHtml = script.substring(0, 32));
+ separatorHtml || (separatorHtml = "")
+ var scriptIndex = _jmolAddScript(script);
+ var eospan = " "
+ var t = " "
+ if (labelHtml.toLowerCase().indexOf(" ")>=0) {
+ t += eospan
+ eospan = "";
+ }
+ t += "" + labelHtml + " " +eospan + separatorHtml;
+
+ return t;
+}
+
+function _jmolFindApplet(target) {
+ // first look for the target in the current window
+ var applet = _jmolFindAppletInWindow(_jmol.appletWindow != null ? _jmol.appletWindow : window, target);
+ // THEN look for the target in child frames
+ if (applet == undefined)
+ applet = _jmolSearchFrames(window, target);
+ // FINALLY look for the target in sibling frames
+ if (applet == undefined)
+ applet = _jmolSearchFrames(top, target); // look starting in top frame
+ return applet;
+}
+
+function _jmolGetApplet(targetSuffix){
+ var target = "jmolApplet" + (targetSuffix ? targetSuffix : "0");
+ var applet = _jmolFindApplet(target);
+ if (applet) return applet
+ _jmol.alerted || alert("could not find applet " + target);
+ _jmol.alerted = true;
+ return null
+}
+
+function _jmolSearchFrames(win, target) {
+ var applet;
+ var frames = win.frames;
+ if (frames && frames.length) { // look in all the frames below this window
+ try{
+ for (var i = 0; i < frames.length; ++i) {
+ applet = _jmolSearchFrames(frames[i], target);
+ if (applet)
+ return applet;
+ }
+ }catch(e) {
+ if (_jmol.debugAlert)
+ alert("Jmol.js _jmolSearchFrames cannot access " + win.name + ".frame[" + i + "] consider using jmolSetAppletWindow()")
+ }
+ }
+ return applet = _jmolFindAppletInWindow(win, target)
+}
+
+function _jmolFindAppletInWindow(win, target) {
+ var doc = win.document;
+ if (doc.getElementById(target))
+ return doc.getElementById(target);
+ else if (doc.applets)
+ return doc.applets[target];
+ else
+ return doc[target];
+}
+
+function _jmolAddScript(script) {
+ if (!script)
+ return 0;
+ var index = _jmol.scripts.length;
+ _jmol.scripts[index] = script;
+ return index;
+}
+
+function _jmolClick(elementClicked, scriptIndex, targetSuffix) {
+ _jmol.element = elementClicked;
+ _jmolScriptExecute(elementClicked, _jmol.scripts[scriptIndex], targetSuffix);
+}
+
+function _jmolMenuSelected(menuObject, targetSuffix) {
+ var scriptIndex = menuObject.value;
+ if (scriptIndex != undefined) {
+ _jmolScriptExecute(menuObject, _jmol.scripts[scriptIndex], targetSuffix);
+ return;
+ }
+ var len = menuObject.length;
+ if (typeof len == "number") {
+ for (var i = 0; i < len; ++i) {
+ if (menuObject[i].selected) {
+ _jmolClick(menuObject[i], menuObject[i].value, targetSuffix);
+ return;
+ }
+ }
+ }
+ alert("?Que? menu selected bug #8734");
+}
+
+
+_jmol.checkboxMasters = {};
+_jmol.checkboxItems = {};
+
+function jmolSetCheckboxGroup(chkMaster,chkBox) {
+ var id = chkMaster;
+ if(typeof(id)=="number")id = "jmolCheckbox" + id;
+ chkMaster = document.getElementById(id);
+ if (!chkMaster)alert("jmolSetCheckboxGroup: master checkbox not found: " + id);
+ var m = _jmol.checkboxMasters[id] = {};
+ m.chkMaster = chkMaster;
+ m.chkGroup = {};
+ for (var i = 1; i < arguments.length; i++){
+ var id = arguments[i];
+ if(typeof(id)=="number")id = "jmolCheckbox" + id;
+ checkboxItem = document.getElementById(id);
+ if (!checkboxItem)alert("jmolSetCheckboxGroup: group checkbox not found: " + id);
+ m.chkGroup[id] = checkboxItem;
+ _jmol.checkboxItems[id] = m;
+ }
+}
+
+function _jmolNotifyMaster(m){
+ //called when a group item is checked
+ var allOn = true;
+ var allOff = true;
+ for (var chkBox in m.chkGroup){
+ if(m.chkGroup[chkBox].checked)
+ allOff = false;
+ else
+ allOn = false;
+ }
+ if (allOn)m.chkMaster.checked = true;
+ if (allOff)m.chkMaster.checked = false;
+ if ((allOn || allOff) && _jmol.checkboxItems[m.chkMaster.id])
+ _jmolNotifyMaster(_jmol.checkboxItems[m.chkMaster.id])
+}
+
+function _jmolNotifyGroup(m, isOn){
+ //called when a master item is checked
+ for (var chkBox in m.chkGroup){
+ var item = m.chkGroup[chkBox]
+ item.checked = isOn;
+ if (_jmol.checkboxMasters[item.id])
+ _jmolNotifyGroup(_jmol.checkboxMasters[item.id], isOn)
+ }
+}
+
+function _jmolCbClick(ckbox, whenChecked, whenUnchecked, targetSuffix) {
+ _jmol.control = ckbox
+ _jmolClick(ckbox, ckbox.checked ? whenChecked : whenUnchecked, targetSuffix);
+ if(_jmol.checkboxMasters[ckbox.id])
+ _jmolNotifyGroup(_jmol.checkboxMasters[ckbox.id], ckbox.checked)
+ if(_jmol.checkboxItems[ckbox.id])
+ _jmolNotifyMaster(_jmol.checkboxItems[ckbox.id])
+}
+
+function _jmolCbOver(ckbox, whenChecked, whenUnchecked) {
+ window.status = _jmol.scripts[ckbox.checked ? whenUnchecked : whenChecked];
+}
+
+function _jmolMouseOver(scriptIndex) {
+ window.status = _jmol.scripts[scriptIndex];
+}
+
+function _jmolMouseOut() {
+ window.status = " ";
+ return true;
+}
+
+function _jmolSetCodebase(codebase) {
+ _jmol.codebase = codebase ? codebase : ".";
+ if (_jmol.debugAlert)
+ alert("jmolCodebase=" + _jmol.codebase);
+}
+
+function _jmolOnloadResetForms() {
+ // must be evaluated ONLY once
+ _jmol.previousOnloadHandler = window.onload;
+ window.onload =
+ function() {
+ with (_jmol) {
+ if (buttonCount+checkboxCount+menuCount+radioCount+radioGroupCount > 0) {
+ var forms = document.forms;
+ for (var i = forms.length; --i >= 0; )
+ forms[i].reset();
+ }
+ if (previousOnloadHandler)
+ previousOnloadHandler();
+ }
+ }
+}
+
+////////////////////////////////////
+/////extensions for getProperty/////
+////////////////////////////////////
+
+
+function _jmolEvalJSON(s,key){
+ s=s+""
+ if(!s)return []
+ if(s.charAt(0)!="{"){
+ if(s.indexOf(" | ")>=0)s=s.replace(/\ \|\ /g, "\n")
+ return s
+ }
+ var A = eval("("+s+")")
+ if(!A)return
+ if(key && A[key])A=A[key]
+ return A
+}
+
+function _jmolEnumerateObject(A,key){
+ var sout=""
+ if(typeof(A) == "string" && A!="null"){
+ sout+="\n"+key+"=\""+A+"\""
+ }else if(!isNaN(A)||A==null){
+ sout+="\n"+key+"="+(A+""==""?"null":A)
+ }else if(A.length){
+ sout+=key+"=[]"
+ for(var i=0;ib[0]?-1:0)
+}
+
+function _jmolSortMessages(A){
+ if(!A || typeof(A)!="object")return []
+ var B = []
+ for(var i=A.length-1;i>=0;i--)for(var j=0;j=0;)
+ for(var j=0;j< Ret[i].length;j++)
+ s+=Ret[i][j]+"\n"
+ return s
+}
+
+function jmolScriptWaitOutput(script, targetSuffix) {
+ targetSuffix == undefined && (targetSuffix="0")
+ var ret = ""
+ try{
+ if (script) {
+ _jmolCheckBrowser();
+ var applet=_jmolGetApplet(targetSuffix);
+ if (applet) ret += applet.scriptWaitOutput(script);
+ }
+ }catch(e){
+ }
+ return ret;
+}
+
+function jmolEvaluate(molecularMath, targetSuffix) {
+
+ //carries out molecular math on a model
+
+ targetSuffix == undefined && (targetSuffix="0")
+ var result = "" + jmolGetPropertyAsJavaObject("evaluate", molecularMath, targetSuffix);
+ var s = result.replace(/\-*\d+/,"")
+ if (s == "" && !isNaN(parseInt(result)))return parseInt(result);
+ var s = result.replace(/\-*\d*\.\d*/,"")
+ if (s == "" && !isNaN(parseFloat(result)))return parseFloat(result);
+ return result;
+}
+
+function jmolScriptEcho(script, targetSuffix) {
+ // returns a newline-separated list of all echos from a script
+ targetSuffix == undefined && (targetSuffix="0")
+ var Ret=jmolScriptWaitAsArray(script, targetSuffix)
+ var s = ""
+ for(var i=Ret.length;--i>=0;)
+ for(var j=Ret[i].length;--j>=0;)
+ if (Ret[i][j][1] == "scriptEcho")s+=Ret[i][j][3]+"\n"
+ return s.replace(/ \| /g, "\n")
+}
+
+
+function jmolScriptMessage(script, targetSuffix) {
+ // returns a newline-separated list of all messages from a script, ending with "script completed\n"
+ targetSuffix == undefined && (targetSuffix="0")
+ var Ret=jmolScriptWaitAsArray(script, targetSuffix)
+ var s = ""
+ for(var i=Ret.length;--i>=0;)
+ for(var j=Ret[i].length;--j>=0;)
+ if (Ret[i][j][1] == "scriptStatus")s+=Ret[i][j][3]+"\n"
+ return s.replace(/ \| /g, "\n")
+}
+
+
+function jmolScriptWaitAsArray(script, targetSuffix) {
+ var ret = ""
+ try{
+ jmolGetStatus("scriptEcho,scriptMessage,scriptStatus,scriptError",targetSuffix)
+ if (script) {
+ _jmolCheckBrowser();
+ var applet=_jmolGetApplet(targetSuffix);
+ if (applet) ret += applet.scriptWait(script);
+ ret = _jmolEvalJSON(ret,"jmolStatus")
+ if(typeof ret == "object")
+ return ret
+ }
+ }catch(e){
+ }
+ return [[ret]]
+}
+
+
+
+//////////// save/restore orientation /////////////
+
+function jmolSaveOrientation(id, targetSuffix) {
+ targetSuffix == undefined && (targetSuffix="0")
+ return _jmol["savedOrientation"+id] = jmolGetPropertyAsArray("orientationInfo","info",targetSuffix).moveTo
+}
+
+function jmolRestoreOrientation(id, targetSuffix) {
+ targetSuffix == undefined && (targetSuffix="0")
+ var s=_jmol["savedOrientation"+id]
+ if (!s || s == "")return
+ s=s.replace(/1\.0/,"0")
+ return jmolScriptWait(s,targetSuffix)
+}
+
+function jmolRestoreOrientationDelayed(id, delay, targetSuffix) {
+ arguments.length < 2 && (delay=1)
+ targetSuffix == undefined && (targetSuffix="0")
+ var s=_jmol["savedOrientation"+id]
+ if (!s || s == "")return
+ s=s.replace(/1\.0/,delay)
+ return jmolScriptWait(s,targetSuffix)
+}
+
+//////////// add parameter /////////////
+/*
+ * for adding callbacks or other parameters. Use:
+
+ jmolSetDocument(0)
+ var s= jmolApplet(....)
+ s = jmolAppletAddParam(s,"messageCallback", "myFunctionName")
+ document.write(s)
+ jmolSetDocument(document) // if you want to then write buttons and such normally
+
+ */
+
+function jmolAppletAddParam(appletCode,name,value){
+ return (value == "" ? appletCode : appletCode.replace(/\ \n"
+ +""
+ +"Applet would be here"
+ +""
+ +"
"
+ return _jmolDocumentWrite(s)
+ }
+
+ _jmolFindApplet = function(){return jmolApplet0}
+
+ jmolApplet0 = {
+ script: function(script){document.getElementById("fakeApplet").value="\njmolScript:\n"+script}
+ ,scriptWait: function(script){document.getElementById("fakeApplet").value="\njmolScriptWait:\n"+script}
+ ,loadInline: function(data,script){document.getElementById("fakeApplet").value="\njmolLoadInline data:\n"+data+"\n\nscript:\n"+script}
+ }
+}
+
+
+///////////////////////////////////////////
+
+ // This should no longer be needed, jmolResizeApplet() is better; kept for backwards compatibility
+ /*
+ Resizes absolutely (pixels) or by percent of window (w or h 0.5 means 50%).
+ targetSuffix is optional and defaults to zero (first applet in page).
+ Both w and h are optional, but needed if you want to use targetSuffix.
+ h defaults to w
+ w defaults to 100% of window
+ If either w or h is between 0 and 1, then it is taken as percent/100.
+ If either w or h is greater than 1, then it is taken as a size (pixels).
+ */
+function jmolResize(w,h,targetSuffix) {
+ _jmol.alerted = true;
+ var percentW = (!w ? 100 : w <= 1 && w > 0 ? w * 100 : 0);
+ var percentH = (!h ? percentW : h <= 1 && h > 0 ? h * 100 : 0);
+ if (_jmol.browser=="msie") {
+ var width=document.body.clientWidth;
+ var height=document.body.clientHeight;
+ } else {
+ var netscapeScrollWidth=15;
+ var width=window.innerWidth - netscapeScrollWidth;
+ var height=window.innerHeight-netscapeScrollWidth;
+ }
+ var applet = _jmolGetApplet(targetSuffix);
+ if(!applet)return;
+ applet.style.width = (percentW ? width * percentW/100 : w)+"px";
+ applet.style.height = (percentH ? height * percentH/100 : (h ? h : w))+"px";
+ //title=width + " " + height + " " + (new Date());
+}
+
+// 13 Jun 09 -- makes jmolResize() obsolete (kept for backwards compatibility)
+function jmolResizeApplet(size,targetSuffix) {
+ // See _jmolGetAppletSize() for the formats accepted as size [same used by jmolApplet()]
+ // Special case: an empty value for width or height is accepted, meaning no change in that dimension.
+ _jmol.alerted = true;
+ var applet = _jmolGetApplet(targetSuffix);
+ if(!applet)return;
+ var sz = _jmolGetAppletSize(size, "px");
+ sz[0] && (applet.style.width = sz[0]);
+ sz[1] && (applet.style.height = sz[1]);
+}
+
+function _jmolGetAppletSize(size, units) {
+ /* Accepts single number or 2-value array, each one can be one of:
+ percent (text string ending %), decimal 0 to 1 (percent/100), number, or text string (interpreted as nr.)
+ [width, height] array of strings is returned, with units added if specified.
+ Percent is relative to container div or element (which should have explicitly set size).
+ */
+ var width, height;
+ if ( (typeof size) == "object" && size != null ) {
+ width = size[0]; height = size[1];
+ } else {
+ width = height = size;
+ }
+ return [_jmolFixDim(width, units), _jmolFixDim(height, units)];
+}
+
+function _jmolFixDim(x, units) {
+ var sx = "" + x;
+ return (sx.length == 0 ? (units ? "" : _jmol.allowedJmolSize[2])
+ : sx.indexOf("%") == sx.length-1 ? sx
+ : (x = parseFloat(x)) <= 1 && x > 0 ? x * 100 + "%"
+ : (isNaN(x = Math.floor(x)) ? _jmol.allowedJmolSize[2]
+ : x < _jmol.allowedJmolSize[0] ? _jmol.allowedJmolSize[0]
+ : x > _jmol.allowedJmolSize[1] ? _jmol.allowedJmolSize[1]
+ : x) + (units ? units : ""));
+}
+
+
+
+
diff --git a/JMolViewer/jmol/JmolApplet0.jar b/JMolViewer/jmol/JmolApplet0.jar
new file mode 100644
index 0000000000..3c03eb37ce
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_Console.jar b/JMolViewer/jmol/JmolApplet0_Console.jar
new file mode 100644
index 0000000000..3589c63483
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_Console.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_Minimize.jar b/JMolViewer/jmol/JmolApplet0_Minimize.jar
new file mode 100644
index 0000000000..de424e1f80
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_Minimize.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_Popup.jar b/JMolViewer/jmol/JmolApplet0_Popup.jar
new file mode 100644
index 0000000000..b5d00470df
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_Popup.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_ReadersCifPdb.jar b/JMolViewer/jmol/JmolApplet0_ReadersCifPdb.jar
new file mode 100644
index 0000000000..dec4cdc416
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_ReadersCifPdb.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_ReadersMolXyz.jar b/JMolViewer/jmol/JmolApplet0_ReadersMolXyz.jar
new file mode 100644
index 0000000000..af61ddfd15
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_ReadersMolXyz.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_ReadersMore.jar b/JMolViewer/jmol/JmolApplet0_ReadersMore.jar
new file mode 100644
index 0000000000..41218a8ee5
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_ReadersMore.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_ReadersQuantum.jar b/JMolViewer/jmol/JmolApplet0_ReadersQuantum.jar
new file mode 100644
index 0000000000..b5b5c49679
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_ReadersQuantum.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_ReadersSimple.jar b/JMolViewer/jmol/JmolApplet0_ReadersSimple.jar
new file mode 100644
index 0000000000..00427484ab
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_ReadersSimple.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_ReadersXml.jar b/JMolViewer/jmol/JmolApplet0_ReadersXml.jar
new file mode 100644
index 0000000000..3da2367fc9
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_ReadersXml.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_ReadersXtal.jar b/JMolViewer/jmol/JmolApplet0_ReadersXtal.jar
new file mode 100644
index 0000000000..c22b7cac27
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_ReadersXtal.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_ShapeBio.jar b/JMolViewer/jmol/JmolApplet0_ShapeBio.jar
new file mode 100644
index 0000000000..72d3b4a860
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_ShapeBio.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_ShapeSpecial.jar b/JMolViewer/jmol/JmolApplet0_ShapeSpecial.jar
new file mode 100644
index 0000000000..34e4d25498
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_ShapeSpecial.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_ShapeSurface.jar b/JMolViewer/jmol/JmolApplet0_ShapeSurface.jar
new file mode 100644
index 0000000000..311eed6d13
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_ShapeSurface.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_Smiles.jar b/JMolViewer/jmol/JmolApplet0_Smiles.jar
new file mode 100644
index 0000000000..839420dad1
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_Smiles.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_Symmetry.jar b/JMolViewer/jmol/JmolApplet0_Symmetry.jar
new file mode 100644
index 0000000000..620caea395
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_Symmetry.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_ar.jar b/JMolViewer/jmol/JmolApplet0_i18n_ar.jar
new file mode 100644
index 0000000000..032bfc0a8c
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_ar.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_ca.jar b/JMolViewer/jmol/JmolApplet0_i18n_ca.jar
new file mode 100644
index 0000000000..380cb101b5
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_ca.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_cs.jar b/JMolViewer/jmol/JmolApplet0_i18n_cs.jar
new file mode 100644
index 0000000000..703af9e37e
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_cs.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_da.jar b/JMolViewer/jmol/JmolApplet0_i18n_da.jar
new file mode 100644
index 0000000000..3fe100a10a
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_da.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_de.jar b/JMolViewer/jmol/JmolApplet0_i18n_de.jar
new file mode 100644
index 0000000000..d76de4b1cc
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_de.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_el.jar b/JMolViewer/jmol/JmolApplet0_i18n_el.jar
new file mode 100644
index 0000000000..17c203d6ed
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_el.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_en_GB.jar b/JMolViewer/jmol/JmolApplet0_i18n_en_GB.jar
new file mode 100644
index 0000000000..b8291a133b
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_en_GB.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_es.jar b/JMolViewer/jmol/JmolApplet0_i18n_es.jar
new file mode 100644
index 0000000000..5da7717964
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_es.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_et.jar b/JMolViewer/jmol/JmolApplet0_i18n_et.jar
new file mode 100644
index 0000000000..c5ecff28b9
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_et.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_fi.jar b/JMolViewer/jmol/JmolApplet0_i18n_fi.jar
new file mode 100644
index 0000000000..8a8d034b4c
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_fi.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_fr.jar b/JMolViewer/jmol/JmolApplet0_i18n_fr.jar
new file mode 100644
index 0000000000..d5c6babf5b
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_fr.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_hu.jar b/JMolViewer/jmol/JmolApplet0_i18n_hu.jar
new file mode 100644
index 0000000000..06a9e895a3
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_hu.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_id.jar b/JMolViewer/jmol/JmolApplet0_i18n_id.jar
new file mode 100644
index 0000000000..f52027b831
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_id.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_it.jar b/JMolViewer/jmol/JmolApplet0_i18n_it.jar
new file mode 100644
index 0000000000..bf3e471d0e
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_it.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_ko.jar b/JMolViewer/jmol/JmolApplet0_i18n_ko.jar
new file mode 100644
index 0000000000..3bf59cc13c
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_ko.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_nb.jar b/JMolViewer/jmol/JmolApplet0_i18n_nb.jar
new file mode 100644
index 0000000000..f5b42066bb
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_nb.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_nl.jar b/JMolViewer/jmol/JmolApplet0_i18n_nl.jar
new file mode 100644
index 0000000000..efe7ab3cf7
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_nl.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_oc.jar b/JMolViewer/jmol/JmolApplet0_i18n_oc.jar
new file mode 100644
index 0000000000..a3068e1252
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_oc.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_pl.jar b/JMolViewer/jmol/JmolApplet0_i18n_pl.jar
new file mode 100644
index 0000000000..38e7565fc6
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_pl.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_pt.jar b/JMolViewer/jmol/JmolApplet0_i18n_pt.jar
new file mode 100644
index 0000000000..9cb998156d
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_pt.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_pt_BR.jar b/JMolViewer/jmol/JmolApplet0_i18n_pt_BR.jar
new file mode 100644
index 0000000000..eb2f0b421f
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_pt_BR.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_ru.jar b/JMolViewer/jmol/JmolApplet0_i18n_ru.jar
new file mode 100644
index 0000000000..8524972d07
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_ru.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_sl.jar b/JMolViewer/jmol/JmolApplet0_i18n_sl.jar
new file mode 100644
index 0000000000..3cb9698b01
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_sl.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_sv.jar b/JMolViewer/jmol/JmolApplet0_i18n_sv.jar
new file mode 100644
index 0000000000..acd34107b1
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_sv.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_ta.jar b/JMolViewer/jmol/JmolApplet0_i18n_ta.jar
new file mode 100644
index 0000000000..7158edd749
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_ta.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_tr.jar b/JMolViewer/jmol/JmolApplet0_i18n_tr.jar
new file mode 100644
index 0000000000..53868e85fd
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_tr.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_uk.jar b/JMolViewer/jmol/JmolApplet0_i18n_uk.jar
new file mode 100644
index 0000000000..cc2bcac2fe
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_uk.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_zh_CN.jar b/JMolViewer/jmol/JmolApplet0_i18n_zh_CN.jar
new file mode 100644
index 0000000000..1d610eca28
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_zh_CN.jar differ
diff --git a/JMolViewer/jmol/JmolApplet0_i18n_zh_TW.jar b/JMolViewer/jmol/JmolApplet0_i18n_zh_TW.jar
new file mode 100644
index 0000000000..18d5a3f438
Binary files /dev/null and b/JMolViewer/jmol/JmolApplet0_i18n_zh_TW.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned.jar b/JMolViewer/jmol/JmolAppletSigned.jar
new file mode 100644
index 0000000000..47d38bd28b
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0.jar b/JMolViewer/jmol/JmolAppletSigned0.jar
new file mode 100644
index 0000000000..463e916e22
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_Console.jar b/JMolViewer/jmol/JmolAppletSigned0_Console.jar
new file mode 100644
index 0000000000..02f5fc90b7
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_Console.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_Minimize.jar b/JMolViewer/jmol/JmolAppletSigned0_Minimize.jar
new file mode 100644
index 0000000000..79aa22917b
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_Minimize.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_MultiTouch.jar b/JMolViewer/jmol/JmolAppletSigned0_MultiTouch.jar
new file mode 100644
index 0000000000..d87c838976
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_MultiTouch.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_ar.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_ar.jar
new file mode 100644
index 0000000000..14caf7a14c
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_ar.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_ca.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_ca.jar
new file mode 100644
index 0000000000..ed7b5dab1e
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_ca.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_cs.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_cs.jar
new file mode 100644
index 0000000000..de1cfee7b3
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_cs.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_da.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_da.jar
new file mode 100644
index 0000000000..26a0868279
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_da.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_de.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_de.jar
new file mode 100644
index 0000000000..65c7e449df
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_de.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_el.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_el.jar
new file mode 100644
index 0000000000..9e483ee4fc
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_el.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_en_GB.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_en_GB.jar
new file mode 100644
index 0000000000..e1eac0c5bc
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_en_GB.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_es.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_es.jar
new file mode 100644
index 0000000000..785c80d401
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_es.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_et.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_et.jar
new file mode 100644
index 0000000000..9a82bd311b
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_et.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_fi.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_fi.jar
new file mode 100644
index 0000000000..153187a70f
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_fi.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_fr.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_fr.jar
new file mode 100644
index 0000000000..ef0f99a573
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_fr.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_hu.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_hu.jar
new file mode 100644
index 0000000000..4387d1fb29
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_hu.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_id.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_id.jar
new file mode 100644
index 0000000000..a47645c670
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_id.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_it.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_it.jar
new file mode 100644
index 0000000000..38f85060eb
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_it.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_ko.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_ko.jar
new file mode 100644
index 0000000000..139ad86499
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_ko.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_nb.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_nb.jar
new file mode 100644
index 0000000000..ac6822d912
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_nb.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_nl.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_nl.jar
new file mode 100644
index 0000000000..5fde0a78de
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_nl.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_oc.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_oc.jar
new file mode 100644
index 0000000000..e0cd8ebebd
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_oc.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_pl.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_pl.jar
new file mode 100644
index 0000000000..5720cc8f85
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_pl.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_pt.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_pt.jar
new file mode 100644
index 0000000000..0f14ef4fe2
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_pt.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_pt_BR.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_pt_BR.jar
new file mode 100644
index 0000000000..24bec150e1
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_pt_BR.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_ru.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_ru.jar
new file mode 100644
index 0000000000..4fad11af72
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_ru.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_sl.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_sl.jar
new file mode 100644
index 0000000000..e44efd9f36
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_sl.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_sv.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_sv.jar
new file mode 100644
index 0000000000..a8dd9d7829
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_sv.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_ta.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_ta.jar
new file mode 100644
index 0000000000..9b614106fe
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_ta.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_tr.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_tr.jar
new file mode 100644
index 0000000000..688d78b67c
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_tr.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_uk.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_uk.jar
new file mode 100644
index 0000000000..fda929d362
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_uk.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_zh_CN.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_zh_CN.jar
new file mode 100644
index 0000000000..c8b9cc5c4e
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_zh_CN.jar differ
diff --git a/JMolViewer/jmol/JmolAppletSigned0_i18n_zh_TW.jar b/JMolViewer/jmol/JmolAppletSigned0_i18n_zh_TW.jar
new file mode 100644
index 0000000000..03ed4edf19
Binary files /dev/null and b/JMolViewer/jmol/JmolAppletSigned0_i18n_zh_TW.jar differ
diff --git a/modules/xerte/parent_templates/Nottingham/Nottingham.rlt b/modules/xerte/parent_templates/Nottingham/Nottingham.rlt
index 141de9df31..9ff1eae505 100644
--- a/modules/xerte/parent_templates/Nottingham/Nottingham.rlt
+++ b/modules/xerte/parent_templates/Nottingham/Nottingham.rlt
@@ -1 +1 @@
-
');
newChild = newXML.firstChild;
newChild.attributes.title = 'Main Menu';
newChild.attributes.linkID = extXML.firstChild.childNodes[i].attributes.linkID;
ifc.appendChild(newChild);
} else {
pgOffset = 1;
}
debug("-=" + templateData.learningObject[0].test);
//custom interface
if (templateData.learningObject[0].controller != undefined){
icon.nextSibling.attributes.swf = templateData.learningObject[0].controller;
icon.nextSibling.attributes.visuals = 0;
}
//help file
if (templateData.learningObject[0].nfo != undefined){
icon.nextSibling.attributes.helpfile = templateData.learningObject[0].nfo;
}
//default text size
if (templateData.learningObject[0].textSize != undefined){
STYLES.defaultSize = templateData.learningObject[0].textSize;
STYLES.inputSize = templateData.learningObject[0].textSize;
}
for (i = 0; i < extXML.firstChild.childNodes.length; i++){
//build this file dynamically
modName = extXML.firstChild.childNodes[i].nodeName;
if (modName == 'xerteModel'){
newXML = new XML(' ');
//is there an initObject...?
if (extXML.firstChild.childNodes[i].attributes.initObject != undefined){
newXML.firstChild.attributes.initObject = extXML.firstChild.childNodes[i].attributes.initObject;
}
} else {
newXML = new XML(' ');
}
newChild = newXML.firstChild;
newChild.attributes.title = extXML.firstChild.childNodes[i].attributes.name;
newChild.attributes.linkID = extXML.firstChild.childNodes[i].attributes.linkID;
if (extXML.firstChild.childNodes[i].attributes.linkID == _level0.linkID && extXML.firstChild.childNodes[i].attributes.linkID != undefined){
linkIndex = i;
}
ifc.appendChild(newChild);
}
]]>
\ No newline at end of file
+
');
newChild = newXML.firstChild;
newChild.attributes.title = 'Main Menu';
newChild.attributes.linkID = extXML.firstChild.childNodes[i].attributes.linkID;
ifc.appendChild(newChild);
} else {
pgOffset = 1;
}
//custom interface
if (templateData.learningObject[0].controller != undefined){
icon.nextSibling.attributes.swf = templateData.learningObject[0].controller;
icon.nextSibling.attributes.visuals = 0;
}
//help file
if (templateData.learningObject[0].nfo != undefined){
icon.nextSibling.attributes.helpfile = templateData.learningObject[0].nfo;
}
//default text size
if (templateData.learningObject[0].textSize != undefined){
STYLES.defaultSize = templateData.learningObject[0].textSize;
STYLES.inputSize = templateData.learningObject[0].textSize;
}
for (i = 0; i < extXML.firstChild.childNodes.length; i++){
//build this file dynamically
modName = extXML.firstChild.childNodes[i].nodeName;
if (modName == 'xerteModel'){
newXML = new XML(' ');
//is there an initObject...?
if (extXML.firstChild.childNodes[i].attributes.initObject != undefined){
newXML.firstChild.attributes.initObject = extXML.firstChild.childNodes[i].attributes.initObject;
}
} else {
newXML = new XML(' ');
}
newChild = newXML.firstChild;
newChild.attributes.title = extXML.firstChild.childNodes[i].attributes.name;
newChild.attributes.linkID = extXML.firstChild.childNodes[i].attributes.linkID;
if (extXML.firstChild.childNodes[i].attributes.linkID == _level0.linkID && extXML.firstChild.childNodes[i].attributes.linkID != undefined){
linkIndex = i;
}
ifc.appendChild(newChild);
}
]]>
\ No newline at end of file
diff --git a/modules/xerte/parent_templates/Nottingham/data.xwd b/modules/xerte/parent_templates/Nottingham/data.xwd
index 16e10ca0c8..8689ecabba 100644
--- a/modules/xerte/parent_templates/Nottingham/data.xwd
+++ b/modules/xerte/parent_templates/Nottingham/data.xwd
@@ -58,6 +58,7 @@
]]>
+ ]]>
]]>
]]>
]]>
@@ -90,6 +91,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -431,6 +447,8 @@
+
+
]]>
diff --git a/modules/xerte/parent_templates/Nottingham/models/jmol.rlm b/modules/xerte/parent_templates/Nottingham/models/jmol.rlm
new file mode 100644
index 0000000000..b3700a443c
--- /dev/null
+++ b/modules/xerte/parent_templates/Nottingham/models/jmol.rlm
@@ -0,0 +1 @@
+
' + pageIcon.templateData.jmol[0].tip + ' }]]>
\ No newline at end of file
diff --git a/modules/xerte/parent_templates/Nottingham/models/mcq.rlm b/modules/xerte/parent_templates/Nottingham/models/mcq.rlm
index f13640e6a6..94906d02fc 100644
--- a/modules/xerte/parent_templates/Nottingham/models/mcq.rlm
+++ b/modules/xerte/parent_templates/Nottingham/models/mcq.rlm
@@ -1 +1 @@
-
Feedback ' + fb;
]]>
\ No newline at end of file
+
Feedback ' + fb;
]]>
\ No newline at end of file