JAL-1551 crlf changes due to checkout with text=auto
authorJim Procter <j.procter@dundee.ac.uk>
Wed, 15 Oct 2014 14:27:12 +0000 (15:27 +0100)
committerJim Procter <j.procter@dundee.ac.uk>
Wed, 15 Oct 2014 14:27:12 +0000 (15:27 +0100)
examples/javascript/jshashtable-2.1.js
examples/jmol/Jmol.js
examples/uniref50.fa
help/help.hs
resources/lang/Messages_es.properties
src/castor.properties
src/jalview/datamodel/SequenceI.java
test/jalview/ws/PDBSequenceFetcherTest.java
utils/.cvsignore
utils/splitstockholm.pl

index 3b93622..e19c0be 100644 (file)
@@ -1,16 +1,16 @@
-/**\r
- * Copyright 2010 Tim Down.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
+/**
+ * Copyright 2010 Tim Down.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 var Hashtable=(function(){var p="function";var n=(typeof Array.prototype.splice==p)?function(s,r){s.splice(r,1)}:function(u,t){var s,v,r;if(t===u.length-1){u.length=t}else{s=u.slice(t+1);u.length=t;for(v=0,r=s.length;v<r;++v){u[t+v]=s[v]}}};function a(t){var r;if(typeof t=="string"){return t}else{if(typeof t.hashCode==p){r=t.hashCode();return(typeof r=="string")?r:a(r)}else{if(typeof t.toString==p){return t.toString()}else{try{return String(t)}catch(s){return Object.prototype.toString.call(t)}}}}}function g(r,s){return r.equals(s)}function e(r,s){return(typeof s.equals==p)?s.equals(r):(r===s)}function c(r){return function(s){if(s===null){throw new Error("null is not a valid "+r)}else{if(typeof s=="undefined"){throw new Error(r+" must not be undefined")}}}}var q=c("key"),l=c("value");function d(u,s,t,r){this[0]=u;this.entries=[];this.addEntry(s,t);if(r!==null){this.getEqualityFunction=function(){return r}}}var h=0,j=1,f=2;function o(r){return function(t){var s=this.entries.length,v,u=this.getEqualityFunction(t);while(s--){v=this.entries[s];if(u(t,v[0])){switch(r){case h:return true;case j:return v;case f:return[s,v[1]]}}}return false}}function k(r){return function(u){var v=u.length;for(var t=0,s=this.entries.length;t<s;++t){u[v+t]=this.entries[t][r]}}}d.prototype={getEqualityFunction:function(r){return(typeof r.equals==p)?g:e},getEntryForKey:o(j),getEntryAndIndexForKey:o(f),removeEntryForKey:function(s){var r=this.getEntryAndIndexForKey(s);if(r){n(this.entries,r[0]);return r[1]}return null},addEntry:function(r,s){this.entries[this.entries.length]=[r,s]},keys:k(0),values:k(1),getEntries:function(s){var u=s.length;for(var t=0,r=this.entries.length;t<r;++t){s[u+t]=this.entries[t].slice(0)}},containsKey:o(h),containsValue:function(s){var r=this.entries.length;while(r--){if(s===this.entries[r][1]){return true}}return false}};function m(s,t){var r=s.length,u;while(r--){u=s[r];if(t===u[0]){return r}}return null}function i(r,s){var t=r[s];return(t&&(t instanceof d))?t:null}function b(t,r){var w=this;var v=[];var u={};var x=(typeof t==p)?t:a;var s=(typeof r==p)?r:null;this.put=function(B,C){q(B);l(C);var D=x(B),E,A,z=null;E=i(u,D);if(E){A=E.getEntryForKey(B);if(A){z=A[1];A[1]=C}else{E.addEntry(B,C)}}else{E=new d(D,B,C,s);v[v.length]=E;u[D]=E}return z};this.get=function(A){q(A);var B=x(A);var C=i(u,B);if(C){var z=C.getEntryForKey(A);if(z){return z[1]}}return null};this.containsKey=function(A){q(A);var z=x(A);var B=i(u,z);return B?B.containsKey(A):false};this.containsValue=function(A){l(A);var z=v.length;while(z--){if(v[z].containsValue(A)){return true}}return false};this.clear=function(){v.length=0;u={}};this.isEmpty=function(){return !v.length};var y=function(z){return function(){var A=[],B=v.length;while(B--){v[B][z](A)}return A}};this.keys=y("keys");this.values=y("values");this.entries=y("getEntries");this.remove=function(B){q(B);var C=x(B),z,A=null;var D=i(u,C);if(D){A=D.removeEntryForKey(B);if(A!==null){if(!D.entries.length){z=m(v,C);n(v,z);delete u[C]}}}return A};this.size=function(){var A=0,z=v.length;while(z--){A+=v[z].entries.length}return A};this.each=function(C){var z=w.entries(),A=z.length,B;while(A--){B=z[A];C(B[0],B[1])}};this.putAll=function(H,C){var B=H.entries();var E,F,D,z,A=B.length;var G=(typeof C==p);while(A--){E=B[A];F=E[0];D=E[1];if(G&&(z=w.get(F))){D=C(F,z,D)}w.put(F,D)}};this.clone=function(){var z=new b(t,r);z.putAll(w);return z}}return b})();
\ No newline at end of file
index 6962276..fbc3638 100644 (file)
-/* Jmol 12.0 script library Jmol.js 9:48 PM 1/31/2011 Bob Hanson\r
-\r
- checkbox heirarchy -- see http://chemapps.stolaf.edu/jmol/docs/examples-11/check.htm\r
-\r
-    based on:\r
- *\r
- * Copyright (C) 2004-2005  Miguel, Jmol Development, www.jmol.org\r
- *\r
- * Contact: hansonr@stolaf.edu\r
- *\r
- *  This library is free software; you can redistribute it and/or\r
- *  modify it under the terms of the GNU Lesser General Public\r
- *  License as published by the Free Software Foundation; either\r
- *  version 2.1 of the License, or (at your option) any later version.\r
- *\r
- *  This library is distributed in the hope that it will be useful,\r
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
- *  Lesser General Public License for more details.\r
- *\r
- *  You should have received a copy of the GNU Lesser General Public\r
- *  License along with this library; if not, write to the Free Software\r
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA\r
- *  02111-1307  USA.\r
- */\r
-\r
-// for documentation see www.jmol.org/jslibrary\r
-\r
-try{if(typeof(_jmol)!="undefined")exit()\r
-\r
-// place "?NOAPPLET" on your command line to check applet control action with a textarea\r
-// place "?JMOLJAR=xxxxx" to use a specific jar file\r
-\r
-// bob hanson -- jmolResize(w,h) -- resizes absolutely or by percent (w or h 0.5 means 50%)\r
-//    angel herraez -- update of jmolResize(w,h,targetSuffix) so it is not tied to first applet\r
-// bob hanson -- jmolEvaluate -- evaluates molecular math 8:37 AM 2/23/2007\r
-// bob hanson -- jmolScriptMessage -- returns all "scriptStatus" messages 8:37 AM 2/23/2007\r
-// bob hanson -- jmolScriptEcho -- returns all "scriptEcho" messages 8:37 AM 2/23/2007\r
-// bob hanson -- jmolScriptWait -- 11:31 AM 5/2/2006\r
-// bob hanson -- remove trailing separatorHTML in radio groups -- 12:18 PM 5/6/2006\r
-// bob hanson -- adds support for dynamic DOM script nodes 7:04 AM 5/19/2006\r
-// bob hanson -- adds try/catch for wiki - multiple code passes 7:05 AM 5/19/2006\r
-// bob hanson -- auto-initiates to defaultdir/defaultjar -- change as desired.\r
-// bob hanson -- adding save/restore orientation w/ and w/o delay 11:49 AM 5/25/2006\r
-// bob hanson -- adding AjaxJS service 11:16 AM 6/3/2006\r
-// bob hanson -- fix for iframes not available for finding applet\r
-// bob hanson -- added applet fake ?NOAPPLET URL flag\r
-// bob hanson -- added jmolSetCallback(calbackName, funcName) 3:32 PM 6/13/2006\r
-//                     used PRIOR to jmolApplet() or jmolAppletInline()\r
-//               added 4th array element in jmolRadioGroup -- title\r
-//               added <span> and id around link, checkbox, radio, menu\r
-//               fixing AJAX loads for MSIE/Opera-Mozilla incompatibility\r
-//            -- renamed Jmol-11.js from Jmol-new.js; JmolApplet.jar from JmolAppletProto.jar\r
-//              renamed Jmol.js for Jmol 11 distribution\r
-//            -- modified jmolRestoreOrientation() to be immediate, no 1-second delay\r
-// bob hanson -- jmolScriptWait always returns a string -- 11:23 AM 9/16/2006\r
-// bh         -- jmolCommandInput()\r
-// bh         -- jmolSetTranslation(TF) -- forces translation even if there might be message callback issues\r
-// bh         -- minor fixes suggested by Angel\r
-// bh         -- adds jmolSetSyncId() and jmolGetSyncId()\r
-// bh 3/2008  -- adds jmolAppendInlineScript() and jmolAppendInlineArray()\r
-// bh 3/2008  -- fixes IE7 bug in relation to jmolLoadInlineArray()\r
-// bh 6/2008  -- adds jmolSetAppletWindow()\r
-// Angel H. 6/2008  -- added html <label> tags to checkboxes and radio buttons [in jmolCheckbox() and _jmolRadio() functions]\r
-// bh 7/2008  -- code fix "for(i..." not "for(var i..."\r
-// bh 12/2008 -- jmolLoadInline, jmolLoadInlineArray, jmolLoadInlineScript, jmolAppendInlineScript, jmolAppendInlineArray all return error message or null (Jmol 11.7.16)\r
-// bh 12/2008 -- jmolScriptWaitOutput() -- waits for script to complete and delivers output normally sent to console\r
-\r
-// bh 5/2009  -- Support for XHTML using jmolSetXHTML(id)\r
-// ah & bh 6/2009 -- New jmolResizeApplet() more flexible, similar to jmolApplet() size syntax\r
-// bh 11/2009 -- care in accessing top.document\r
-// bh 12/2009 -- added jmolSetParameter(name, value)\r
-// bh 12/2009 -- added PARAMS=name:value;name:value;name:value... for command line\r
-// bh 12/2009 -- overhaul of target checking\r
-// bh 1/2010  -- all _xxxx() methods ALWAYS have complete argument list\r
-// bh 1/2010  -- adds option to run a JavaScript function from any Jmol control. \r
-//               This is accomplished by passing an array rather than a script:\r
-//               jmolHref([myfunc,"my param 1", "my param 2"], "testing")\r
-//               function myfunc(jmolControlObject, [myfunc,"my param 1", "my param 2"], target){...}\r
-//               and allows much more flexibility with responding to controls\r
-// bh 4/2010  -- added jmolSetMemoryMb(nMb)\r
-// ah 1/2011  -- wider detection of browsers; more browsers now use the object tag instead of the applet tag; \r
-//               fix of object tag (removed classid) accounts for change of behavior in Chrome\r
-// bh 3/2011  -- added jmolLoadAjax_STOLAF_NIH\r
-\r
-var defaultdir = "."\r
-var defaultjar = "JmolApplet.jar"\r
-\r
-\r
-// Note added 12:41 PM 9/21/2008 by Bob Hanson, hansonr@stolaf.edu:\r
-\r
-// JMOLJAR=xxxxx.jar on the URL for this page will override\r
-// the JAR file specified in the jmolInitialize() call.\r
-\r
-// The idea is that it can be very useful to test a web page with different JAR files\r
-// Or for an expert user to substitute a signed applet for an unsigned one\r
-// so as to use a broader range of models or to create JPEG files, for example.\r
-\r
-// If the JAR file is not in the current directory (has any sort of "/" in its name)\r
-// then the user is presented with a warning and asked whether it is OK to change Jar files.\r
-// The default action, if the user just presses "OK" is to NOT allow the change. \r
-// The user must type the word "yes" in the prompt box for the change to be approved.\r
-\r
-// If you don't want people to be able to switch in their own JAR file on your page,\r
-// simply set this next line to read "var allowJMOLJAR = false".\r
-\r
-\r
-var undefined; // for IE 5 ... wherein undefined is undefined\r
-\r
-////////////////////////////////////////////////////////////////\r
-// Basic Scripting infrastruture\r
-////////////////////////////////////////////////////////////////\r
-\r
-function jmolInitialize(codebaseDirectory, fileNameOrUseSignedApplet) {\r
-  if (_jmol.initialized)\r
-    return;\r
-  _jmol.initialized = true;\r
-  if(_jmol.jmoljar) {\r
-    var f = _jmol.jmoljar;\r
-    if (f.indexOf("/") >= 0) {\r
-      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.")\r
-      var ok = prompt("Do you want to use applet " + f + "? ","yes or no")\r
-      if (ok == "yes") {\r
-        codebaseDirectory = f.substring(0, f.lastIndexOf("/"));\r
-        fileNameOrUseSignedApplet = f.substring(f.lastIndexOf("/") + 1);\r
-      } else {\r
-       _jmolGetJarFilename(fileNameOrUseSignedApplet);\r
-        alert("The web page URL was ignored. Continuing using " + _jmol.archivePath + ' in directory "' + codebaseDirectory + '"');\r
-      }\r
-    } else {\r
-      fileNameOrUseSignedApplet = f;\r
-    }\r
-  }\r
-  _jmolSetCodebase(codebaseDirectory);\r
-  _jmolGetJarFilename(fileNameOrUseSignedApplet);\r
-  _jmolOnloadResetForms();\r
-}\r
-\r
-function jmolSetTranslation(TF) {\r
-  _jmol.params.doTranslate = ''+TF;\r
-}\r
-\r
-function _jmolGetJarFilename(fileNameOrFlag) {\r
-  _jmol.archivePath =\r
-    (typeof(fileNameOrFlag) == "string"  ? fileNameOrFlag : (fileNameOrFlag ?  "JmolAppletSigned" : "JmolApplet") + "0.jar");\r
-}\r
-\r
-function jmolSetDocument(doc) {\r
-  _jmol.currentDocument = doc;\r
-}\r
-\r
-function jmolSetAppletColor(boxbgcolor, boxfgcolor, progresscolor) {\r
-  _jmolInitCheck();\r
-  _jmol.params.boxbgcolor = boxbgcolor;\r
-  if (boxfgcolor)\r
-    _jmol.params.boxfgcolor = boxfgcolor\r
-  else if (boxbgcolor == "white" || boxbgcolor == "#FFFFFF")\r
-    _jmol.params.boxfgcolor = "black";\r
-  else\r
-    _jmol.params.boxfgcolor = "white";\r
-  if (progresscolor)\r
-    _jmol.params.progresscolor = progresscolor;\r
-  if (_jmol.debugAlert)\r
-    alert(" boxbgcolor=" + _jmol.params.boxbgcolor +\r
-          " boxfgcolor=" + _jmol.params.boxfgcolor +\r
-          " progresscolor=" + _jmol.params.progresscolor);\r
-}\r
-\r
-function jmolSetAppletWindow(w) {\r
-  _jmol.appletWindow = w;\r
-}\r
-\r
-function jmolApplet(size, script, nameSuffix) {\r
-  _jmolInitCheck();\r
-  return _jmolApplet(size, null, script, nameSuffix);\r
-}\r
-\r
-////////////////////////////////////////////////////////////////\r
-// Basic controls\r
-////////////////////////////////////////////////////////////////\r
-\r
-// undefined means it wasn't there; null means it was explicitly listed as null (so as to skip it)\r
-\r
-function jmolButton(script, label, id, title) {\r
-  _jmolInitCheck();\r
-  id != undefined && id != null || (id = "jmolButton" + _jmol.buttonCount);\r
-  label != undefined && label != null || (label = script.substring(0, 32));\r
-  ++_jmol.buttonCount;\r
-  var scriptIndex = _jmolAddScript(script);\r
-  var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input type='button' name='" + id + "' id='" + id +\r
-          "' value='" + label +\r
-          "' onclick='_jmolClick(this," + scriptIndex + _jmol.targetText +\r
-          ")' onmouseover='_jmolMouseOver(" + scriptIndex +\r
-          ");return true' onmouseout='_jmolMouseOut()' " +\r
-          _jmol.buttonCssText + " /></span>";\r
-  if (_jmol.debugAlert)\r
-    alert(t);\r
-  return _jmolDocumentWrite(t);\r
-}\r
-\r
-function jmolCheckbox(scriptWhenChecked, scriptWhenUnchecked,\r
-                      labelHtml, isChecked, id, title) {\r
-  _jmolInitCheck();\r
-  id != undefined && id != null || (id = "jmolCheckbox" + _jmol.checkboxCount);\r
-  ++_jmol.checkboxCount;\r
-  if (scriptWhenChecked == undefined || scriptWhenChecked == null ||\r
-      scriptWhenUnchecked == undefined || scriptWhenUnchecked == null) {\r
-    alert("jmolCheckbox requires two scripts");\r
-    return;\r
-  }\r
-  if (labelHtml == undefined || labelHtml == null) {\r
-    alert("jmolCheckbox requires a label");\r
-    return;\r
-  }\r
-  var indexChecked = _jmolAddScript(scriptWhenChecked);\r
-  var indexUnchecked = _jmolAddScript(scriptWhenUnchecked);\r
-  var eospan = "</span>"\r
-  var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input type='checkbox' name='" + id + "' id='" + id +\r
-          "' onclick='_jmolCbClick(this," +\r
-          indexChecked + "," + indexUnchecked + _jmol.targetText +\r
-          ")' onmouseover='_jmolCbOver(this," + indexChecked + "," +\r
-          indexUnchecked +\r
-          ");return true' onmouseout='_jmolMouseOut()' " +\r
-         (isChecked ? "checked='true' " : "")+ _jmol.checkboxCssText + " />" \r
-  if (labelHtml.toLowerCase().indexOf("<td>")>=0) {\r
-       t += eospan\r
-       eospan = "";\r
-  }\r
-  t += "<label for=\"" + id + "\">" + labelHtml + "</label>" +eospan;\r
-  if (_jmol.debugAlert)\r
-    alert(t);\r
-  return _jmolDocumentWrite(t);\r
-}\r
-\r
-function jmolStartNewRadioGroup() {\r
-  ++_jmol.radioGroupCount;\r
-}\r
-\r
-function jmolRadioGroup(arrayOfRadioButtons, separatorHtml, groupName, id, title) {\r
-  /*\r
-\r
-    array: [radio1,radio2,radio3...]\r
-    where radioN = ["script","label",isSelected,"id","title"]\r
-\r
-  */\r
-\r
-  _jmolInitCheck();\r
-  var type = typeof arrayOfRadioButtons;\r
-  if (type != "object" || type == null || ! arrayOfRadioButtons.length) {\r
-    alert("invalid arrayOfRadioButtons");\r
-    return;\r
-  }\r
-  separatorHtml != undefined && separatorHtml != null || (separatorHtml = "&nbsp; ");\r
-  var len = arrayOfRadioButtons.length;\r
-  jmolStartNewRadioGroup();\r
-  groupName || (groupName = "jmolRadioGroup" + (_jmol.radioGroupCount - 1));\r
-  var t = "<span id='"+(id ? id : groupName)+"'>";\r
-  for (var i = 0; i < len; ++i) {\r
-    if (i == len - 1)\r
-      separatorHtml = "";\r
-    var radio = arrayOfRadioButtons[i];\r
-    type = typeof radio;\r
-    if (type == "object") {\r
-      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);\r
-    } else {\r
-      t += _jmolRadio(radio, null, null, separatorHtml, groupName, (id ? id : groupName)+"_"+i, title);\r
-    }\r
-  }\r
-  t+="</span>"\r
-  if (_jmol.debugAlert)\r
-    alert(t);\r
-  return _jmolDocumentWrite(t);\r
-}\r
-\r
-\r
-function jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, id, title) {\r
-  _jmolInitCheck();\r
-  if (_jmol.radioGroupCount == 0)\r
-    ++_jmol.radioGroupCount;\r
-  var t = _jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, (id ? id : groupName + "_" + _jmol.radioCount), title ? title : 0);\r
-  if (_jmol.debugAlert)\r
-    alert(t);\r
-  return _jmolDocumentWrite(t);\r
-}\r
-\r
-function jmolLink(script, label, id, title) {\r
-  _jmolInitCheck();\r
-  id != undefined && id != null || (id = "jmolLink" + _jmol.linkCount);\r
-  label != undefined && label != null || (label = script.substring(0, 32));\r
-  ++_jmol.linkCount;\r
-  var scriptIndex = _jmolAddScript(script);\r
-  var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><a name='" + id + "' id='" + id + \r
-          "' href='javascript:_jmolClick(this," + scriptIndex + _jmol.targetText + ");' onmouseover='_jmolMouseOver(" + scriptIndex +\r
-          ");return true;' onmouseout='_jmolMouseOut()' " +\r
-          _jmol.linkCssText + ">" + label + "</a></span>";\r
-  if (_jmol.debugAlert)\r
-    alert(t);\r
-  return _jmolDocumentWrite(t);\r
-}\r
-\r
-function jmolCommandInput(label, size, id, title) {\r
-  _jmolInitCheck();\r
-  id != undefined && id != null || (id = "jmolCmd" + _jmol.cmdCount);\r
-  label != undefined && label != null || (label = "Execute");\r
-  size != undefined && !isNaN(size) || (size = 60);\r
-  ++_jmol.cmdCount;\r
-  var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input name='" + id + "' id='" + id + \r
-          "' size='"+size+"' onkeypress='_jmolCommandKeyPress(event,\""+id+"\"" + _jmol.targetText + ")'><input type=button value = '"+label+"' onclick='jmolScript(document.getElementById(\""+id+"\").value" + _jmol.targetText + ")' /></span>";\r
-  if (_jmol.debugAlert)\r
-    alert(t);\r
-  return _jmolDocumentWrite(t);\r
-}\r
-\r
-function _jmolCommandKeyPress(e, id, target) {\r
-       var keycode = (window.event ? window.event.keyCode : e ? e.which : 0);\r
-       if (keycode == 13) {\r
-               var inputBox = document.getElementById(id)\r
-               _jmolScriptExecute(inputBox, inputBox.value, target)\r
-       }\r
-}\r
-\r
-function _jmolScriptExecute(element,script,target) {\r
-       if (typeof(script) == "object")\r
-               script[0](element, script, target)\r
-       else\r
-               jmolScript(script, target) \r
-}\r
-\r
-function jmolMenu(arrayOfMenuItems, size, id, title) {\r
-  _jmolInitCheck();\r
-  id != undefined && id != null || (id = "jmolMenu" + _jmol.menuCount);\r
-  ++_jmol.menuCount;\r
-  var type = typeof arrayOfMenuItems;\r
-  if (type != null && type == "object" && arrayOfMenuItems.length) {\r
-    var len = arrayOfMenuItems.length;\r
-    if (typeof size != "number" || size == 1)\r
-      size = null;\r
-    else if (size < 0)\r
-      size = len;\r
-    var sizeText = size ? " size='" + size + "' " : "";\r
-    var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><select name='" + id + "' id='" + id +\r
-            "' onChange='_jmolMenuSelected(this" + _jmol.targetText + ")'" +\r
-            sizeText + _jmol.menuCssText + ">";\r
-    for (var i = 0; i < len; ++i) {\r
-      var menuItem = arrayOfMenuItems[i];\r
-      type = typeof menuItem;\r
-      var script, text;\r
-      var isSelected = undefined;\r
-      if (type == "object" && menuItem != null) {\r
-        script = menuItem[0];\r
-        text = menuItem[1];\r
-        isSelected = menuItem[2];\r
-      } else {\r
-        script = text = menuItem;\r
-      }\r
-      text != undefined && text != null || (text = script);            \r
-      if (script=="#optgroup") {\r
-        t += "<optgroup label='" + text + "'>";          \r
-         } else if (script=="#optgroupEnd") {\r
-        t += "</optgroup>";      \r
-         } else {              \r
-        var scriptIndex = _jmolAddScript(script);\r
-        var selectedText = isSelected ? "' selected='true'>" : "'>";\r
-        t += "<option value='" + scriptIndex + selectedText + text + "</option>";\r
-      }\r
-    }\r
-    t += "</select></span>";\r
-    if (_jmol.debugAlert)\r
-      alert(t);\r
-    return _jmolDocumentWrite(t);\r
-  }\r
-}\r
-\r
-function jmolHtml(html) {\r
-  return _jmolDocumentWrite(html);\r
-}\r
-\r
-function jmolBr() {\r
-  return _jmolDocumentWrite("<br />");\r
-}\r
-\r
-////////////////////////////////////////////////////////////////\r
-// advanced scripting functions\r
-////////////////////////////////////////////////////////////////\r
-\r
-function jmolDebugAlert(enableAlerts) {\r
-  _jmol.debugAlert = (enableAlerts == undefined || enableAlerts)\r
-}\r
-\r
-function jmolAppletInline(size, inlineModel, script, nameSuffix) {\r
-  _jmolInitCheck();\r
-  return _jmolApplet(size, _jmolSterilizeInline(inlineModel),\r
-                     script, nameSuffix);\r
-}\r
-\r
-function jmolSetTarget(targetSuffix) {\r
-  _jmol.targetSuffix = targetSuffix;\r
-  _jmol.targetText = targetSuffix ? ",\"" + targetSuffix + "\"" : ",0";\r
-}\r
-\r
-function jmolScript(script, targetSuffix) {\r
-  if (script) {\r
-    _jmolCheckBrowser();\r
-    if (targetSuffix == "all") {\r
-      with (_jmol) {\r
-       for (var i = 0; i < appletSuffixes.length; ++i) {\r
-         var applet = _jmolGetApplet(appletSuffixes[i]);\r
-          if (applet) applet.script(script);\r
-        }\r
-      }\r
-    } else {\r
-      var applet=_jmolGetApplet(targetSuffix);\r
-      if (applet) applet.script(script);\r
-    }\r
-  }\r
-}\r
-\r
-function jmolLoadInline(model, targetSuffix) {\r
-  if (!model)return "ERROR: NO MODEL"\r
-  var applet=_jmolGetApplet(targetSuffix);\r
-  if (!applet)return "ERROR: NO APPLET"\r
-  if (typeof(model) == "string")\r
-    return applet.loadInlineString(model, "", false);\r
-  else\r
-    return applet.loadInlineArray(model, "", false);\r
-}\r
-\r
-\r
-function jmolLoadInlineScript(model, script, targetSuffix) {\r
-  if (!model)return "ERROR: NO MODEL"\r
-  var applet=_jmolGetApplet(targetSuffix);\r
-  if (!applet)return "ERROR: NO APPLET"\r
-  return applet.loadInlineString(model, script, false);\r
-}\r
-\r
-\r
-function jmolLoadInlineArray(ModelArray, script, targetSuffix) {\r
-  if (!model)return "ERROR: NO MODEL"\r
-  script || (script="")\r
-  var applet=_jmolGetApplet(targetSuffix);\r
-  if (!applet)return "ERROR: NO APPLET"\r
-  try {\r
-    return applet.loadInlineArray(ModelArray, script, false);\r
-  } catch (err) {\r
-    //IE 7 bug\r
-    return applet.loadInlineString(ModelArray.join("\n"), script, false);\r
-  }\r
-}\r
-\r
-function jmolAppendInlineArray(ModelArray, script, targetSuffix) {\r
-  if (!model)return "ERROR: NO MODEL"\r
-  script || (script="")\r
-  var applet=_jmolGetApplet(targetSuffix);\r
-  if (!applet)return "ERROR: NO APPLET"\r
-  try {\r
-    return applet.loadInlineArray(ModelArray, script, true);\r
-  } catch (err) {\r
-    //IE 7 bug\r
-    return applet.loadInlineString(ModelArray.join("\n"), script, true);\r
-  }\r
-}\r
-\r
-function jmolAppendInlineScript(model, script, targetSuffix) {\r
-  if (!model)return "ERROR: NO MODEL"\r
-  var applet=_jmolGetApplet(targetSuffix);\r
-  if (!applet)return "ERROR: NO APPLET"\r
-  return applet.loadInlineString(model, script, true);\r
-}\r
-\r
-function jmolCheckBrowser(action, urlOrMessage, nowOrLater) {\r
-  if (typeof action == "string") {\r
-    action = action.toLowerCase();\r
-    action == "alert" || action == "redirect" || action == "popup" || (action = null);\r
-  }\r
-  if (typeof action != "string")\r
-    alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +\r
-          "action must be 'alert', 'redirect', or 'popup'");\r
-  else {\r
-    if (typeof urlOrMessage != "string")\r
-      alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +\r
-            "urlOrMessage must be a string");\r
-    else {\r
-      _jmol.checkBrowserAction = action;\r
-      _jmol.checkBrowserUrlOrMessage = urlOrMessage;\r
-    }\r
-  }\r
-  if (typeof nowOrLater == "string" && nowOrLater.toLowerCase() == "now")\r
-    _jmolCheckBrowser();\r
-}\r
-\r
-////////////////////////////////////////////////////////////////\r
-// Cascading Style Sheet Class support\r
-////////////////////////////////////////////////////////////////\r
-\r
-function jmolSetAppletCssClass(appletCssClass) {\r
-  if (_jmol.hasGetElementById) {\r
-    _jmol.appletCssClass = appletCssClass;\r
-    _jmol.appletCssText = appletCssClass ? "class='" + appletCssClass + "' " : "";\r
-  }\r
-}\r
-\r
-function jmolSetButtonCssClass(buttonCssClass) {\r
-  if (_jmol.hasGetElementById) {\r
-    _jmol.buttonCssClass = buttonCssClass;\r
-    _jmol.buttonCssText = buttonCssClass ? "class='" + buttonCssClass + "' " : "";\r
-  }\r
-}\r
-\r
-function jmolSetCheckboxCssClass(checkboxCssClass) {\r
-  if (_jmol.hasGetElementById) {\r
-    _jmol.checkboxCssClass = checkboxCssClass;\r
-    _jmol.checkboxCssText = checkboxCssClass ? "class='" + checkboxCssClass + "' " : "";\r
-  }\r
-}\r
-\r
-function jmolSetRadioCssClass(radioCssClass) {\r
-  if (_jmol.hasGetElementById) {\r
-    _jmol.radioCssClass = radioCssClass;\r
-    _jmol.radioCssText = radioCssClass ? "class='" + radioCssClass + "' " : "";\r
-  }\r
-}\r
-\r
-function jmolSetLinkCssClass(linkCssClass) {\r
-  if (_jmol.hasGetElementById) {\r
-    _jmol.linkCssClass = linkCssClass;\r
-    _jmol.linkCssText = linkCssClass ? "class='" + linkCssClass + "' " : "";\r
-  }\r
-}\r
-\r
-function jmolSetMenuCssClass(menuCssClass) {\r
-  if (_jmol.hasGetElementById) {\r
-    _jmol.menuCssClass = menuCssClass;\r
-    _jmol.menuCssText = menuCssClass ? "class='" + menuCssClass + "' " : "";\r
-  }\r
-}\r
-\r
-////////////////////////////////////////////////////////////////\r
-// functions for INTERNAL USE ONLY which are subject to change\r
-// use at your own risk ... you have been WARNED!\r
-////////////////////////////////////////////////////////////////\r
-var _jmol = {\r
-  currentDocument: document,\r
-\r
-  debugAlert: false,\r
-  \r
-  codebase: "",\r
-  modelbase: ".",\r
-  \r
-  appletCount: 0,\r
-  appletSuffixes: [],\r
-  appletWindow: null,\r
-  allowedJmolSize: [25, 2048, 300],   // min, max, default (pixels)\r
-         /*  By setting the _jmol.allowedJmolSize[] variable in the webpage \r
-             before calling jmolApplet(), limits for applet size can be overriden.\r
-                   2048 standard for GeoWall (http://geowall.geo.lsa.umich.edu/home.html)\r
-         */  \r
-  buttonCount: 0,\r
-  checkboxCount: 0,\r
-  linkCount: 0,\r
-  cmdCount: 0,\r
-  menuCount: 0,\r
-  radioCount: 0,\r
-  radioGroupCount: 0,\r
-  \r
-  appletCssClass: null,\r
-  appletCssText: "",\r
-  buttonCssClass: null,\r
-  buttonCssText: "",\r
-  checkboxCssClass: null,\r
-  checkboxCssText: "",\r
-  java_arguments: "-Xmx512m",\r
-  radioCssClass: null,\r
-  radioCssText: "",\r
-  linkCssClass: null,\r
-  linkCssText: "",\r
-  menuCssClass: null,\r
-  menuCssText: "",\r
-  \r
-  targetSuffix: 0,\r
-  targetText: ",0",\r
-  scripts: [""],\r
-  params: {\r
-       syncId: ("" + Math.random()).substring(3),\r
-       progressbar: "true",\r
-       progresscolor: "blue",\r
-       boxbgcolor: "black",\r
-       boxfgcolor: "white",\r
-       boxmessage: "Downloading JmolApplet ..."\r
-  },\r
-  ua: navigator.userAgent.toLowerCase(),\r
-  // uaVersion: parseFloat(navigator.appVersion),  // not used\r
-  \r
-  os: "unknown",\r
-  browser: "unknown",\r
-  browserVersion: 0,\r
-  hasGetElementById: !!document.getElementById,\r
-  isJavaEnabled: navigator.javaEnabled(),\r
-  // isNetscape47Win: false,  // not used, N4.7 is no longer supported even for detection\r
-  useIEObject: false,\r
-  useHtml4Object: false,\r
-  \r
-  windowsClassId: "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93",\r
-  windowsCabUrl:\r
-   "http://java.sun.com/update/1.6.0/jinstall-6u22-windows-i586.cab",\r
-\r
-  isBrowserCompliant: false,\r
-  isJavaCompliant: false,\r
-  isFullyCompliant: false,\r
-\r
-  initialized: false,\r
-  initChecked: false,\r
-  \r
-  browserChecked: false,\r
-  checkBrowserAction: "alert",\r
-  checkBrowserUrlOrMessage: null,\r
-\r
-  archivePath: null, // JmolApplet0.jar OR JmolAppletSigned0.jar\r
-\r
-  previousOnloadHandler: null,\r
-\r
-  jmoljar: null,  \r
-  useNoApplet: false,\r
-\r
-  ready: {}\r
-}\r
-\r
-with (_jmol) {\r
-  function _jmolTestUA(candidate) {\r
-    var ua = _jmol.ua;\r
-    var index = ua.indexOf(candidate);\r
-    if (index < 0)\r
-      return false;\r
-    _jmol.browser = candidate;\r
-    _jmol.browserVersion = parseFloat(ua.substring(index+candidate.length+1));\r
-    return true;\r
-  }\r
-  \r
-  function _jmolTestOS(candidate) {\r
-    if (_jmol.ua.indexOf(candidate) < 0)\r
-      return false;\r
-    _jmol.os = candidate;\r
-    return true;\r
-  }\r
-  \r
-  _jmolTestUA("konqueror") ||\r
-  _jmolTestUA("webkit") ||\r
-  _jmolTestUA("omniweb") ||\r
-  _jmolTestUA("opera") ||\r
-  _jmolTestUA("webtv") ||\r
-  _jmolTestUA("icab") ||\r
-  _jmolTestUA("msie") ||\r
-  (_jmol.ua.indexOf("compatible") < 0 && _jmolTestUA("mozilla")); //Netscape, Mozilla, Seamonkey, Firefox and anything assimilated\r
-  \r
-  _jmolTestOS("linux") ||\r
-  _jmolTestOS("unix") ||\r
-  _jmolTestOS("mac") ||\r
-  _jmolTestOS("win");\r
-\r
-  /* not used:\r
-       isNetscape47Win = (os == "win" && browser == "mozilla" &&\r
-                     browserVersion >= 4.78 && browserVersion <= 4.8);\r
-       */\r
-\r
-  if (os == "win") {\r
-    isBrowserCompliant = hasGetElementById;\r
-  } else if (os == "mac") { // mac is the problem child :-(\r
-    if (browser == "mozilla" && browserVersion >= 5) {\r
-      // miguel 2004 11 17\r
-      // checking the plugins array does not work because\r
-      // Netscape 7.2 OS X still has Java 1.3.1 listed even though\r
-      // javaplugin.sf.net is installed to upgrade to 1.4.2\r
-      eval("try {var v = java.lang.System.getProperty('java.version');" +\r
-           " _jmol.isBrowserCompliant = v >= '1.4.2';" +\r
-           " } catch (e) { }");\r
-    } else if (browser == "opera" && browserVersion <= 7.54) {\r
-      isBrowserCompliant = false;\r
-    } else {\r
-      isBrowserCompliant = hasGetElementById &&\r
-        !((browser == "msie") ||\r
-          (browser == "webkit" && browserVersion < 125.12));\r
-    }\r
-  } else if (os == "linux" || os == "unix") {\r
-    if (browser == "konqueror" && browserVersion <= 3.3)\r
-      isBrowserCompliant = false;\r
-    else\r
-      isBrowserCompliant = hasGetElementById;\r
-  } else { // other OS\r
-    isBrowserCompliant = hasGetElementById;\r
-  }\r
-\r
-  // possibly more checks in the future for this\r
-  isJavaCompliant = isJavaEnabled;\r
-\r
-  isFullyCompliant = isBrowserCompliant && isJavaCompliant;\r
-\r
-  useIEObject = (os == "win" && browser == "msie" && browserVersion >= 5.5);\r
-  useHtml4Object =\r
-   (browser == "mozilla" && browserVersion >= 5) ||\r
-   (browser == "opera" && browserVersion >= 8) ||\r
-   (browser == "webkit" && browserVersion >= 412.2);\r
- try {\r
-  if (top.location.search.indexOf("JMOLJAR=")>=0)\r
-    jmoljar = top.location.search.split("JMOLJAR=")[1].split("&")[0];\r
- } catch(e) {\r
-  // can't access top.location\r
- }\r
- try {\r
-  useNoApplet = (top.location.search.indexOf("NOAPPLET")>=0);\r
- } catch(e) {\r
-  // can't access top.document\r
- }\r
-}\r
-\r
-function jmolSetMemoryMb(nMb) {\r
-  _jmol.java_arguments = "-Xmx" + Math.round(nMb) + "m"\r
-}\r
-\r
-function jmolSetParameter(name,value) {\r
-  _jmol.params[name] = value\r
-}\r
-\r
-function jmolSetCallback(callbackName,funcName) {\r
-  _jmol.params[callbackName] = funcName\r
-}\r
-\r
- try {\r
-// note this is done FIRST, so it cannot override a setting done by the developer\r
-  if (top.location.search.indexOf("PARAMS=")>=0) {\r
-    var pars = unescape(top.location.search.split("PARAMS=")[1].split("&")[0]).split(";");\r
-    for (var i = 0; i < pars.length; i++) {\r
-      var p = pars[i].split(":");\r
-      jmolSetParameter(p[0],p[1]);\r
-    }\r
-  }\r
- } catch(e) {\r
-  // can't access top.location\r
- }\r
-\r
-function jmolSetSyncId(n) {\r
-  return _jmol.params["syncId"] = n\r
-}\r
-\r
-function jmolGetSyncId() {\r
-  return _jmol.params["syncId"]\r
-}\r
-\r
-function jmolSetLogLevel(n) {\r
-  _jmol.params.logLevel = ''+n;\r
-}\r
-\r
-       /*  AngelH, mar2007:\r
-               By (re)setting these variables in the webpage before calling jmolApplet(), \r
-               a custom message can be provided (e.g. localized for user's language) when no Java is installed.\r
-       */\r
-if (noJavaMsg==undefined) var noJavaMsg = \r
-        "You do not have Java applets enabled in your web browser, or your browser is blocking this applet.<br />\n" +\r
-        "Check the warning message from your browser and/or enable Java applets in<br />\n" +\r
-        "your web browser preferences, or install the Java Runtime Environment from <a href='http://www.java.com'>www.java.com</a><br />";\r
-if (noJavaMsg2==undefined) var noJavaMsg2 = \r
-        "You do not have the<br />\n" +\r
-        "Java Runtime Environment<br />\n" +\r
-        "installed for applet support.<br />\n" +\r
-        "Visit <a href='http://www.java.com'>www.java.com</a>";\r
-function _jmolApplet(size, inlineModel, script, nameSuffix) {\r
-       /*  AngelH, mar2007\r
-               Fixed percent / pixel business, to avoid browser errors:\r
-               put "px" where needed, avoid where not.\r
-\r
-           Bob Hanson, 1/2010\r
-               Fixed inline escape changing returns to |               \r
-       */\r
-  with (_jmol) {\r
-    nameSuffix == undefined && (nameSuffix = appletCount);\r
-    appletSuffixes.push(nameSuffix);\r
-    ++appletCount;\r
-    script || (script = "select *");\r
-    var sz = _jmolGetAppletSize(size);\r
-    var widthAndHeight = " width='" + sz[0] + "' height='" + sz[1] + "' ";\r
-    var tHeader, tFooter;\r
-    codebase || jmolInitialize(".");\r
-    if (useIEObject || useHtml4Object) {\r
-      params.archive = archivePath;\r
-      params.mayscript = 'true';\r
-      params.codebase = codebase;\r
-      params.code = 'JmolApplet';\r
-      tHeader = \r
-        "<object name='jmolApplet" + nameSuffix +\r
-        "' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +\r
-                               widthAndHeight + "\n";\r
-      tFooter = "</object>";\r
-    }\r
-    if (java_arguments)\r
-      params.java_arguments = java_arguments;\r
-    if (useIEObject) { // use MSFT IE6 object tag with .cab file reference\r
-      tHeader += " classid='" + windowsClassId + "'\n" +\r
-      (windowsCabUrl ? " codebase='" + windowsCabUrl + "'\n" : "") + ">\n";\r
-    } else if (useHtml4Object) { // use HTML4 object tag\r
-      tHeader += " type='application/x-java-applet'\n>\n";\r
-                               /*      " classid='java:JmolApplet'\n" +        AH removed this\r
-                                 Chromium Issue 62076:         Java Applets using an <object> with a classid paramater don't load.\r
-                                       http://code.google.com/p/chromium/issues/detail?id=62076\r
-                                       They say this is the correct behavior according to the spec, and there's no indication at this point \r
-                                       that WebKit will be changing the handling, so eventually Safari will acquire this behavior too.\r
-                                       Removing the classid parameter seems to be well tolerated by all browsers (even IE!).\r
-                               */\r
-    } else { // use applet tag\r
-      tHeader = \r
-        "<applet name='jmolApplet" + nameSuffix +\r
-        "' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +\r
-                               widthAndHeight + "\n" +\r
-        " code='JmolApplet'" +\r
-        " archive='" + archivePath + "' codebase='" + codebase + "'\n" +\r
-        " mayscript='true'>\n";\r
-      tFooter = "</applet>";\r
-    }\r
-    var visitJava;\r
-    if (useIEObject || useHtml4Object) {\r
-               var szX = "width:" + sz[0]\r
-               if ( szX.indexOf("%")==-1 ) szX+="px" \r
-               var szY = "height:" + sz[1]\r
-               if ( szY.indexOf("%")==-1 ) szY+="px" \r
-      visitJava =\r
-        "<p style='background-color:yellow; color:black; " +\r
-               szX + ";" + szY + ";" +\r
-        // why doesn't this vertical-align work?\r
-       "text-align:center;vertical-align:middle;'>\n" +\r
-               noJavaMsg +\r
-        "</p>";\r
-    } else {\r
-      visitJava =\r
-        "<table bgcolor='yellow'><tr>" +\r
-        "<td align='center' valign='middle' " + widthAndHeight + "><font color='black'>\n" +\r
-               noJavaMsg2 +\r
-        "</font></td></tr></table>";\r
-    }\r
-    params.loadInline = (inlineModel ? inlineModel : "");\r
-    params.script = (script ? _jmolSterilizeScript(script) : "");\r
-    var t = tHeader + _jmolParams() + visitJava + tFooter;\r
-    jmolSetTarget(nameSuffix);\r
-    ready["jmolApplet" + nameSuffix] = false;\r
-    if (_jmol.debugAlert)\r
-      alert(t);\r
-    return _jmolDocumentWrite(t);\r
-  }\r
-}\r
-\r
-function _jmolParams() {\r
- var t = "";\r
- for (var i in _jmol.params)\r
-       if(_jmol.params[i]!="")\r
-                t+="  <param name='"+i+"' value='"+_jmol.params[i]+"' />\n";\r
- return t\r
-}\r
-\r
-function _jmolInitCheck() {\r
-  if (_jmol.initChecked)\r
-    return;\r
-  _jmol.initChecked = true;\r
-  jmolInitialize(defaultdir, defaultjar)\r
-}\r
-\r
-function _jmolCheckBrowser() {\r
-  with (_jmol) {\r
-    if (browserChecked)\r
-      return;\r
-    browserChecked = true;\r
-  \r
-    if (isFullyCompliant)\r
-      return true;\r
-\r
-    if (checkBrowserAction == "redirect")\r
-      location.href = checkBrowserUrlOrMessage;\r
-    else if (checkBrowserAction == "popup")\r
-      _jmolPopup(checkBrowserUrlOrMessage);\r
-    else {\r
-      var msg = checkBrowserUrlOrMessage;\r
-      if (msg == null)\r
-        msg = "Your web browser is not fully compatible with Jmol\n\n" +\r
-              "browser: " + browser +\r
-              "   version: " + browserVersion +\r
-              "   os: " + os +\r
-              "   isBrowserCompliant: " + isBrowserCompliant +\r
-              "   isJavaCompliant: " + isJavaCompliant +\r
-              "\n\n" + ua;\r
-      alert(msg);\r
-    }\r
-  }\r
-  return false;\r
-}\r
-\r
-function jmolSetXHTML(id) {\r
-       _jmol.isXHTML = true\r
-       _jmol.XhtmlElement = null\r
-       _jmol.XhtmlAppendChild = false\r
-       if (id){\r
-               _jmol.XhtmlElement = document.getElementById(id)\r
-               _jmol.XhtmlAppendChild = true\r
-       }\r
-}\r
-\r
-function _jmolDocumentWrite(text) {\r
-       if (_jmol.currentDocument) {\r
-               if (_jmol.isXHTML && !_jmol.XhtmlElement) {\r
-                       var s = document.getElementsByTagName("script")\r
-                       _jmol.XhtmlElement = s.item(s.length - 1)\r
-                       _jmol.XhtmlAppendChild = false\r
-               }\r
-               if (_jmol.XhtmlElement) {\r
-                       _jmolDomDocumentWrite(text)\r
-               } else {\r
-                       _jmol.currentDocument.write(text);\r
-               }\r
-       }\r
-       return text;\r
-}\r
-\r
-function _jmolDomDocumentWrite(data) {\r
-       var pt = 0\r
-       var Ptr = []\r
-       Ptr[0] = 0\r
-       while (Ptr[0] < data.length) {\r
-               var child = _jmolGetDomElement(data, Ptr)\r
-               if (!child)break\r
-               if (_jmol.XhtmlAppendChild)\r
-                       _jmol.XhtmlElement.appendChild(child)\r
-               else\r
-                       _jmol.XhtmlElement.parentNode.insertBefore(child, _jmol.XhtmlElement); \r
-       }\r
-}\r
-function _jmolGetDomElement(data, Ptr, closetag, lvel) {\r
-       var e = document.createElement("span")\r
-       e.innerHTML = data\r
-       Ptr[0] = data.length\r
-       return e\r
-\r
-//unnecessary?\r
-\r
-       closetag || (closetag = "")\r
-       lvel || (lvel = 0)\r
-       var pt0 = Ptr[0]\r
-       var pt = pt0\r
-       while (pt < data.length && data.charAt(pt) != "<") pt++\r
-       if (pt != pt0) {\r
-               var text = data.substring(pt0, pt)\r
-               Ptr[0] = pt\r
-               return document.createTextNode(text)\r
-       }       \r
-       pt0 = ++pt\r
-       var ch\r
-       while (pt < data.length && "\n\r\t >".indexOf(ch = data.charAt(pt)) < 0) pt++\r
-       var tagname = data.substring(pt0, pt)\r
-       var e = (tagname == closetag  || tagname == "/" ? "" \r
-               : document.createElementNS ? document.createElementNS('http://www.w3.org/1999/xhtml', tagname)\r
-               : document.createElement(tagname));\r
-       if (ch == ">") {\r
-               Ptr[0] = ++pt\r
-               return e\r
-       }\r
-       while (pt < data.length && (ch = data.charAt(pt)) != ">") {\r
-               while (pt < data.length && "\n\r\t ".indexOf(ch = data.charAt(pt)) >= 0) pt++\r
-               pt0 = pt\r
-               while (pt < data.length && "\n\r\t =/>".indexOf(ch = data.charAt(pt)) < 0) pt++\r
-               var attrname = data.substring(pt0, pt).toLowerCase()\r
-               if (attrname && ch != "=") \r
-                       e.setAttribute(attrname, "true")\r
-               while (pt < data.length && "\n\r\t ".indexOf(ch = data.charAt(pt)) >= 0) pt++\r
-               if (ch == "/") {\r
-                       Ptr[0] = pt + 2\r
-                       return e\r
-               } else if (ch == "=") {\r
-                       var quote = data.charAt(++pt)\r
-                       pt0 = ++pt\r
-                       while (pt < data.length && (ch = data.charAt(pt)) != quote) pt++\r
-                       var attrvalue = data.substring(pt0, pt)\r
-                       e.setAttribute(attrname, attrvalue)\r
-                       pt++\r
-               }\r
-       }\r
-       Ptr[0] = ++pt\r
-       while (Ptr[0] < data.length) {\r
-               var child = _jmolGetDomElement(data, Ptr, "/" + tagname, lvel+1)\r
-               if (!child)break\r
-               e.appendChild(child)\r
-       }\r
-       return e\r
-}\r
-\r
-function _jmolPopup(url) {\r
-  var popup = window.open(url, "JmolPopup",\r
-                          "left=150,top=150,height=400,width=600," +\r
-                          "directories=yes,location=yes,menubar=yes," +\r
-                          "toolbar=yes," +\r
-                          "resizable=yes,scrollbars=yes,status=yes");\r
-  if (popup.focus)\r
-    poup.focus();\r
-}\r
-\r
-function _jmolReadyCallback(name) {\r
-  if (_jmol.debugAlert)\r
-    alert(name + " is ready");\r
-  _jmol.ready["" + name] = true;\r
-}\r
-\r
-function _jmolSterilizeScript(script) {\r
-  script = script.replace(/'/g, "&#39;");\r
-  if (_jmol.debugAlert)\r
-    alert("script:\n" + script);\r
-  return script;\r
-}\r
-\r
-function _jmolSterilizeInline(model) {\r
-  model = model.replace(/\r|\n|\r\n/g, (model.indexOf("|") >= 0 ? "\\/n" : "|")).replace(/'/g, "&#39;");\r
-  if (_jmol.debugAlert)\r
-    alert("inline model:\n" + model);\r
-  return model;\r
-}\r
-\r
-function _jmolRadio(script, labelHtml, isChecked, separatorHtml, groupName, id, title) {\r
-  ++_jmol.radioCount;\r
-  groupName != undefined && groupName != null || (groupName = "jmolRadioGroup" + (_jmol.radioGroupCount - 1));\r
-  if (!script)\r
-    return "";\r
-  labelHtml != undefined && labelHtml != null || (labelHtml = script.substring(0, 32));\r
-  separatorHtml || (separatorHtml = "")\r
-  var scriptIndex = _jmolAddScript(script);\r
-  var eospan = "</span>"\r
-  var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input name='" \r
-       + groupName + "' id='"+id+"' type='radio' onclick='_jmolClick(this," +\r
-         scriptIndex + _jmol.targetText + ");return true;' onmouseover='_jmolMouseOver(" +\r
-         scriptIndex + ");return true;' onmouseout='_jmolMouseOut()' " +\r
-        (isChecked ? "checked='true' " : "") + _jmol.radioCssText + " />"\r
-  if (labelHtml.toLowerCase().indexOf("<td>")>=0) {\r
-       t += eospan\r
-       eospan = "";\r
-  }\r
-  t += "<label for=\"" + id + "\">" + labelHtml + "</label>" +eospan + separatorHtml;\r
-\r
-  return t;\r
-}\r
-\r
-function _jmolFindApplet(target) {\r
-  // first look for the target in the current window\r
-  var applet = _jmolFindAppletInWindow(_jmol.appletWindow != null ? _jmol.appletWindow : window, target);\r
-  // THEN look for the target in child frames\r
-  if (applet == undefined)\r
-    applet = _jmolSearchFrames(window, target);\r
-  // FINALLY look for the target in sibling frames\r
-  if (applet == undefined)\r
-    applet = _jmolSearchFrames(top, target); // look starting in top frame\r
-  return applet;\r
-}\r
-\r
-function _jmolGetApplet(targetSuffix){\r
- var target = "jmolApplet" + (targetSuffix ? targetSuffix : "0");\r
- var applet = _jmolFindApplet(target);\r
- if (applet) return applet\r
- _jmol.alerted || alert("could not find applet " + target);\r
- _jmol.alerted = true;\r
- return null\r
-}\r
-\r
-function _jmolSearchFrames(win, target) {\r
-  var applet;\r
-  var frames = win.frames;\r
-  if (frames && frames.length) { // look in all the frames below this window\r
-   try{\r
-    for (var i = 0; i < frames.length; ++i) {\r
-      applet = _jmolSearchFrames(frames[i], target);\r
-      if (applet)\r
-        return applet;\r
-    }\r
-   }catch(e) {\r
-       if (_jmol.debugAlert)\r
-               alert("Jmol.js _jmolSearchFrames cannot access " + win.name + ".frame[" + i + "] consider using jmolSetAppletWindow()") \r
-   }\r
-  }\r
-  return applet = _jmolFindAppletInWindow(win, target)\r
-}\r
-\r
-function _jmolFindAppletInWindow(win, target) {\r
-    var doc = win.document;\r
-               if (doc.getElementById(target))\r
-      return doc.getElementById(target);\r
-    else if (doc.applets)\r
-      return doc.applets[target];\r
-    else\r
-      return doc[target]; \r
-}\r
-\r
-function _jmolAddScript(script) {\r
-  if (!script)\r
-    return 0;\r
-  var index = _jmol.scripts.length;\r
-  _jmol.scripts[index] = script;\r
-  return index;\r
-}\r
-\r
-function _jmolClick(elementClicked, scriptIndex, targetSuffix) {\r
-  _jmol.element = elementClicked;\r
-  _jmolScriptExecute(elementClicked, _jmol.scripts[scriptIndex], targetSuffix);\r
-}\r
-\r
-function _jmolMenuSelected(menuObject, targetSuffix) {\r
-  var scriptIndex = menuObject.value;\r
-  if (scriptIndex != undefined) {\r
-    _jmolScriptExecute(menuObject, _jmol.scripts[scriptIndex], targetSuffix);\r
-    return;\r
-  }\r
-  var len = menuObject.length;\r
-  if (typeof len == "number") {\r
-    for (var i = 0; i < len; ++i) {\r
-      if (menuObject[i].selected) {\r
-        _jmolClick(menuObject[i], menuObject[i].value, targetSuffix);\r
-       return;\r
-      }\r
-    }\r
-  }\r
-  alert("?Que? menu selected bug #8734");\r
-}\r
-\r
-\r
-_jmol.checkboxMasters = {};\r
-_jmol.checkboxItems = {};\r
-\r
-function jmolSetCheckboxGroup(chkMaster,chkBox) {\r
-       var id = chkMaster;\r
-       if(typeof(id)=="number")id = "jmolCheckbox" + id;\r
-       chkMaster = document.getElementById(id);\r
-       if (!chkMaster)alert("jmolSetCheckboxGroup: master checkbox not found: " + id);\r
-       var m = _jmol.checkboxMasters[id] = {};\r
-       m.chkMaster = chkMaster;\r
-       m.chkGroup = {};\r
-       for (var i = 1; i < arguments.length; i++){\r
-               var id = arguments[i];\r
-               if(typeof(id)=="number")id = "jmolCheckbox" + id;\r
-               checkboxItem = document.getElementById(id);\r
-               if (!checkboxItem)alert("jmolSetCheckboxGroup: group checkbox not found: " + id);\r
-               m.chkGroup[id] = checkboxItem;\r
-               _jmol.checkboxItems[id] = m;\r
-       }\r
-}\r
-\r
-function _jmolNotifyMaster(m){\r
-       //called when a group item is checked\r
-       var allOn = true;\r
-       var allOff = true;\r
-       for (var chkBox in m.chkGroup){\r
-               if(m.chkGroup[chkBox].checked)\r
-                       allOff = false;\r
-               else\r
-                       allOn = false;\r
-       }\r
-       if (allOn)m.chkMaster.checked = true;   \r
-       if (allOff)m.chkMaster.checked = false;\r
-       if ((allOn || allOff) && _jmol.checkboxItems[m.chkMaster.id])\r
-               _jmolNotifyMaster(_jmol.checkboxItems[m.chkMaster.id])\r
-}\r
-\r
-function _jmolNotifyGroup(m, isOn){\r
-       //called when a master item is checked\r
-       for (var chkBox in m.chkGroup){\r
-               var item = m.chkGroup[chkBox]\r
-               item.checked = isOn;\r
-               if (_jmol.checkboxMasters[item.id])\r
-                       _jmolNotifyGroup(_jmol.checkboxMasters[item.id], isOn)\r
-       }\r
-}\r
-\r
-function _jmolCbClick(ckbox, whenChecked, whenUnchecked, targetSuffix) {\r
-  _jmol.control = ckbox\r
-  _jmolClick(ckbox, ckbox.checked ? whenChecked : whenUnchecked, targetSuffix);\r
-  if(_jmol.checkboxMasters[ckbox.id])\r
-       _jmolNotifyGroup(_jmol.checkboxMasters[ckbox.id], ckbox.checked)\r
-  if(_jmol.checkboxItems[ckbox.id])\r
-       _jmolNotifyMaster(_jmol.checkboxItems[ckbox.id])\r
-}\r
-\r
-function _jmolCbOver(ckbox, whenChecked, whenUnchecked) {\r
-  window.status = _jmol.scripts[ckbox.checked ? whenUnchecked : whenChecked];\r
-}\r
-\r
-function _jmolMouseOver(scriptIndex) {\r
-  window.status = _jmol.scripts[scriptIndex];\r
-}\r
-\r
-function _jmolMouseOut() {\r
-  window.status = " ";\r
-  return true;\r
-}\r
-\r
-function _jmolSetCodebase(codebase) {\r
-  _jmol.codebase = codebase ? codebase : ".";\r
-  if (_jmol.debugAlert)\r
-    alert("jmolCodebase=" + _jmol.codebase);\r
-}\r
-\r
-function _jmolOnloadResetForms() {\r
-  // must be evaluated ONLY once\r
-  _jmol.previousOnloadHandler = window.onload;\r
-  window.onload =\r
-  function() {\r
-    with (_jmol) {\r
-      if (buttonCount+checkboxCount+menuCount+radioCount+radioGroupCount > 0) {\r
-        var forms = document.forms;\r
-        for (var i = forms.length; --i >= 0; )\r
-          forms[i].reset();\r
-      }\r
-      if (previousOnloadHandler)\r
-        previousOnloadHandler();\r
-    }\r
-  }\r
-}\r
-\r
-////////////////////////////////////\r
-/////extensions for getProperty/////\r
-////////////////////////////////////\r
-\r
-\r
-function _jmolEvalJSON(s,key){\r
- s=s+""\r
- if(!s)return []\r
- if(s.charAt(0)!="{"){\r
-       if(s.indexOf(" | ")>=0)s=s.replace(/\ \|\ /g, "\n")\r
-       return s\r
- }\r
- var A = eval("("+s+")")\r
- if(!A)return\r
- if(key && A[key])A=A[key]\r
- return A\r
-}\r
-\r
-function _jmolEnumerateObject(A,key){\r
- var sout=""\r
- if(typeof(A) == "string" && A!="null"){\r
-       sout+="\n"+key+"=\""+A+"\""\r
- }else if(!isNaN(A)||A==null){\r
-       sout+="\n"+key+"="+(A+""==""?"null":A)\r
- }else if(A.length){\r
-    sout+=key+"=[]"\r
-    for(var i=0;i<A.length;i++){\r
-       sout+="\n"\r
-       if(typeof(A[i]) == "object"||typeof(A[i]) == "array"){\r
-               sout+=_jmolEnumerateObject(A[i],key+"["+i+"]")\r
-       }else{\r
-               sout+=key+"["+i+"]="+(typeof(A[i]) == "string" && A[i]!="null"?"\""+A[i].replace(/\"/g,"\\\"")+"\"":A[i])\r
-       }\r
-    }\r
- }else{\r
-    if(key != ""){\r
-       sout+=key+"={}"\r
-       key+="."\r
-    }\r
-    \r
-    for(var i in A){\r
-       sout+="\n"\r
-       if(typeof(A[i]) == "object"||typeof(A[i]) == "array"){\r
-               sout+=_jmolEnumerateObject(A[i],key+i)\r
-       }else{\r
-               sout+=key+i+"="+(typeof(A[i]) == "string" && A[i]!="null"?"\""+A[i].replace(/\"/g,"\\\"")+"\"":A[i])\r
-       }\r
-    }\r
- } \r
- return sout\r
-}\r
-\r
-\r
-function _jmolSortKey0(a,b){\r
- return (a[0]<b[0]?1:a[0]>b[0]?-1:0)\r
-}\r
-\r
-function _jmolSortMessages(A){\r
- if(!A || typeof(A)!="object")return []\r
- var B = []\r
- for(var i=A.length-1;i>=0;i--)for(var j=0;j<A[i].length;j++)B[B.length]=A[i][j]\r
- if(B.length == 0) return\r
- B=B.sort(_jmolSortKey0)\r
- return B\r
-}\r
-\r
-/////////additional extensions //////////\r
-\r
-\r
-function _jmolDomScriptLoad(URL){\r
- //open(URL) //to debug\r
- _jmol.servercall=URL\r
- var node = document.getElementById("_jmolScriptNode")\r
- if (node && _jmol.browser!="msie"){\r
-    document.getElementsByTagName("HEAD")[0].removeChild(node)\r
-    node=null\r
- }\r
- if (node) {\r
-   node.setAttribute("src",URL)\r
- } else {\r
-   node=document.createElement("script")\r
-   node.setAttribute("id","_jmolScriptNode")\r
-   node.setAttribute("type","text/javascript")\r
-   node.setAttribute("src",URL)\r
-   document.getElementsByTagName("HEAD")[0].appendChild(node)\r
- }\r
-}\r
-\r
-\r
-function _jmolExtractPostData(url){\r
- S=url.split("&POST:")\r
- var s=""\r
- for(var i=1;i<S.length;i++){\r
-       KV=S[i].split("=")\r
-       s+="&POSTKEY"+i+"="+KV[0]\r
-       s+="&POSTVALUE"+i+"="+KV[1]\r
- }\r
- return "&url="+escape(S[0])+s\r
-}\r
-\r
-function _jmolLoadModel(targetSuffix,remoteURL,array,isError,errorMessage){\r
- //called by server, but in client\r
- //overload this function to customize return\r
- _jmol.remoteURL=remoteURL\r
- isError && alert(errorMessage)\r
- jmolLoadInlineScript(array.join("\n"),_jmol.optionalscript,targetSuffix)\r
-}\r
-\r
-//////////user property/status functions/////////\r
-\r
-function jmolGetStatus(strStatus,targetSuffix){\r
- return _jmolSortMessages(jmolGetPropertyAsArray("jmolStatus",strStatus,targetSuffix))\r
-}\r
-\r
-function jmolGetPropertyAsArray(sKey,sValue,targetSuffix) {\r
- return _jmolEvalJSON(jmolGetPropertyAsJSON(sKey,sValue,targetSuffix),sKey)\r
-}\r
-\r
-function jmolGetPropertyAsString(sKey,sValue,targetSuffix) {\r
- var applet = _jmolGetApplet(targetSuffix);\r
- sValue == undefined && (sValue="");\r
- return (applet ? applet.getPropertyAsString(sKey,sValue) + "" : "")\r
-}\r
-\r
-function jmolGetPropertyAsJSON(sKey,sValue,targetSuffix) {\r
- sValue == undefined && (sValue = "")\r
- var applet = _jmolGetApplet(targetSuffix);\r
- try {\r
-  return (applet ? applet.getPropertyAsJSON(sKey,sValue) + "" : "")\r
- } catch(e) {\r
-  return ""\r
- }\r
-}\r
-\r
-function jmolGetPropertyAsJavaObject(sKey,sValue,targetSuffix) {\r
- sValue == undefined && (sValue = "")\r
- var applet = _jmolGetApplet(targetSuffix);\r
- return (applet ? applet.getProperty(sKey,sValue) : null)\r
-}\r
-\r
-\r
-function jmolDecodeJSON(s) {\r
- return _jmolEnumerateObject(_jmolEvalJSON(s),"")\r
-}\r
-\r
-\r
-///////// synchronous scripting ////////\r
-\r
-function jmolScriptWait(script, targetSuffix) {\r
-  targetSuffix == undefined && (targetSuffix="0")\r
-  var Ret=jmolScriptWaitAsArray(script, targetSuffix)\r
-  var s = ""\r
-  for(var i=Ret.length;--i>=0;)\r
-  for(var j=0;j< Ret[i].length;j++)\r
-       s+=Ret[i][j]+"\n"\r
-  return s\r
-}\r
-\r
-function jmolScriptWaitOutput(script, targetSuffix) {\r
-  targetSuffix == undefined && (targetSuffix="0")\r
-  var ret = ""\r
-  try{\r
-   if (script) {\r
-    _jmolCheckBrowser();\r
-    var applet=_jmolGetApplet(targetSuffix);\r
-    if (applet) ret += applet.scriptWaitOutput(script);\r
-   }\r
-  }catch(e){\r
-  }\r
- return ret;\r
-}\r
-\r
-function jmolEvaluate(molecularMath, targetSuffix) {\r
-\r
-  //carries out molecular math on a model\r
-\r
-  targetSuffix == undefined && (targetSuffix="0")\r
-  var result = "" + jmolGetPropertyAsJavaObject("evaluate", molecularMath, targetSuffix);\r
-  var s = result.replace(/\-*\d+/,"")\r
-  if (s == "" && !isNaN(parseInt(result)))return parseInt(result);\r
-  var s = result.replace(/\-*\d*\.\d*/,"")\r
-  if (s == "" && !isNaN(parseFloat(result)))return parseFloat(result);\r
-  return result;\r
-}\r
-\r
-function jmolScriptEcho(script, targetSuffix) {\r
-  // returns a newline-separated list of all echos from a script\r
-  targetSuffix == undefined && (targetSuffix="0")\r
-  var Ret=jmolScriptWaitAsArray(script, targetSuffix)\r
-  var s = ""\r
-  for(var i=Ret.length;--i>=0;)\r
-  for(var j=Ret[i].length;--j>=0;)\r
-        if (Ret[i][j][1] == "scriptEcho")s+=Ret[i][j][3]+"\n"\r
-  return s.replace(/ \| /g, "\n")\r
-}\r
-\r
-\r
-function jmolScriptMessage(script, targetSuffix) {\r
-  // returns a newline-separated list of all messages from a script, ending with "script completed\n"\r
-  targetSuffix == undefined && (targetSuffix="0")\r
-  var Ret=jmolScriptWaitAsArray(script, targetSuffix)\r
-  var s = ""\r
-  for(var i=Ret.length;--i>=0;)\r
-  for(var j=Ret[i].length;--j>=0;)\r
-        if (Ret[i][j][1] == "scriptStatus")s+=Ret[i][j][3]+"\n"\r
-  return s.replace(/ \| /g, "\n")\r
-}\r
-\r
-\r
-function jmolScriptWaitAsArray(script, targetSuffix) {\r
- var ret = ""\r
- try{\r
-  jmolGetStatus("scriptEcho,scriptMessage,scriptStatus,scriptError",targetSuffix)\r
-  if (script) {\r
-    _jmolCheckBrowser();\r
-    var applet=_jmolGetApplet(targetSuffix);\r
-    if (applet) ret += applet.scriptWait(script);\r
-    ret = _jmolEvalJSON(ret,"jmolStatus")\r
-    if(typeof ret == "object")\r
-       return ret\r
-  }\r
- }catch(e){\r
- }\r
-  return [[ret]]\r
-}\r
-\r
-\r
-\r
-////////////   save/restore orientation   /////////////\r
-\r
-function jmolSaveOrientation(id, targetSuffix) {  \r
- targetSuffix == undefined && (targetSuffix="0")\r
- return _jmol["savedOrientation"+id] = jmolGetPropertyAsArray("orientationInfo","info",targetSuffix).moveTo\r
-}\r
-\r
-function jmolRestoreOrientation(id, targetSuffix) {\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var s=_jmol["savedOrientation"+id]\r
- if (!s || s == "")return\r
- s=s.replace(/1\.0/,"0")\r
- return jmolScriptWait(s,targetSuffix)\r
-}\r
-\r
-function jmolRestoreOrientationDelayed(id, delay, targetSuffix) {\r
- arguments.length < 2 && (delay=1)\r
- targetSuffix == undefined && (targetSuffix="0")\r
- var s=_jmol["savedOrientation"+id]\r
- if (!s || s == "")return\r
- s=s.replace(/1\.0/,delay)\r
- return jmolScriptWait(s,targetSuffix)\r
-}\r
-\r
-////////////  add parameter /////////////\r
-/*\r
- * for adding callbacks or other parameters. Use:\r
-\r
-   jmolSetDocument(0)\r
-   var s= jmolApplet(....)\r
-   s = jmolAppletAddParam(s,"messageCallback", "myFunctionName")\r
-   document.write(s)\r
-   jmolSetDocument(document) // if you want to then write buttons and such normally\r
\r
- */\r
-\r
-function jmolAppletAddParam(appletCode,name,value){\r
-  return (value == "" ? appletCode : appletCode.replace(/\<param/,"\n<param name='"+name+"' value='"+value+"' />\n<param"))\r
-}\r
-\r
-///////////////auto load Research Consortium for Structural Biology (RCSB) data ///////////\r
-\r
-function jmolLoadAjax_STOLAF_RCSB(fileformat,pdbid,optionalscript,targetSuffix){\r
-\r
- _jmol.thismodel || (_jmol.thismodel = "1crn")\r
- _jmol.serverURL || (_jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm")\r
- _jmol.RCSBserver || (_jmol.RCSBserver="http://www.rcsb.org")\r
- _jmol.defaultURL_RCSB || (_jmol.defaultURL_RCSB=_jmol.RCSBserver+"/pdb/files/1CRN.CIF")\r
- fileformat || (fileformat="PDB")\r
- pdbid || (pdbid=prompt("Enter a 4-digit PDB ID:",_jmol.thismodel))\r
- if(!pdbid || pdbid.length != 4)return ""\r
- targetSuffix || (targetSuffix="0")\r
- optionalscript || (optionalscript="")\r
- var url=_jmol.defaultURL_RCSB.replace(/1CRN/g,pdbid.toUpperCase())\r
- fileformat=="CIF" || (url=url.replace(/CIF/,fileformat))\r
- _jmol.optionalscript=optionalscript\r
- _jmol.thismodel=pdbid\r
- _jmol.thistargetsuffix=targetSuffix\r
- _jmol.thisurl=url\r
- _jmol.modelArray = []\r
- url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)\r
- _jmolDomScriptLoad(url)\r
- return url\r
-}\r
-\r
-\r
-///////////////auto load NIH CACTVS data -- compound name or SMILES ///////////\r
-\r
-function jmolLoadAjax_STOLAF_NIH(compoundid,optionalscript,targetSuffix){\r
- _jmol.thismodel || (_jmol.thismodel = "aspirin")\r
- _jmol.serverURL || (_jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm")\r
- _jmol.defaultURL_NIH || (_jmol.defaultURL_NIH="http://cactus.nci.nih.gov/chemical/structure/FILE/file?format=sdf&get3d=True")\r
- compoundid || (compoundid=prompt("Enter a compound name or a SMILES string:",_jmol.thismodel))\r
- if(!compoundid)return ""\r
- targetSuffix || (targetSuffix="0")\r
- optionalscript || (optionalscript="")\r
- var url=_jmol.defaultURL_NIH.replace(/FILE/g,compoundid)\r
- _jmol.optionalscript=optionalscript\r
- _jmol.thismodel=compoundid\r
- _jmol.thistargetsuffix=targetSuffix\r
- _jmol.thisurl=url\r
- _jmol.modelArray = []\r
- url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)\r
- _jmolDomScriptLoad(url)\r
- return url\r
-}\r
-\r
-\r
-/////////////// St. Olaf College AJAX server -- ANY URL ///////////\r
-\r
-function jmolLoadAjax_STOLAF_ANY(url, userid, optionalscript,targetSuffix){\r
- _jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm"\r
- _jmol.thisurlANY || (_jmol.thisurlANY = "http://www.stolaf.edu/depts/chemistry/mo/struc/data/ycp3-1.mol")\r
- url || (url=prompt("Enter any (uncompressed file) URL:", _jmol.thisurlANY))\r
- userid || (userid="0")\r
- targetSuffix || (targetSuffix="0")\r
- optionalscript || (optionalscript="")\r
- _jmol.optionalscript=optionalscript\r
- _jmol.thistargetsuffix=targetSuffix\r
- _jmol.modelArray = []\r
- _jmol.thisurl = url\r
- url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)\r
- _jmolDomScriptLoad(url)\r
-}\r
-\r
-\r
-/////////////// Mineralogical Society of America (MSA) data /////////\r
-\r
-function jmolLoadAjax_MSA(key,value,optionalscript,targetSuffix){\r
-\r
- _jmol.thiskeyMSA || (_jmol.thiskeyMSA = "mineral")\r
- _jmol.thismodelMSA || (_jmol.thismodelMSA = "quartz")\r
- _jmol.ajaxURL_MSA || (_jmol.ajaxURL_MSA="http://rruff.geo.arizona.edu/AMS/result.php?mineral=quartz&viewing=ajaxjs")\r
- key || (key=prompt("Enter a field:", _jmol.thiskeyMSA))\r
- if(!key)return ""\r
- value || (value=prompt("Enter a "+key+":", _jmol.thismodelMSA))\r
- if(!value)return ""\r
- targetSuffix || (targetSuffix="0")\r
- optionalscript || (optionalscript="")\r
- optionalscript == 1 && (optionalscript='load "" {1 1 1}')\r
- var url=_jmol.ajaxURL_MSA.replace(/mineral/g,key).replace(/quartz/g,value)\r
- _jmol.optionalscript=optionalscript\r
- _jmol.thiskeyMSA=key\r
- _jmol.thismodelMSA=value\r
- _jmol.thistargetsuffix=targetSuffix\r
- _jmol.thisurl=url\r
- _jmol.modelArray = []\r
- loadModel=_jmolLoadModel\r
- _jmolDomScriptLoad(url)\r
- return url\r
-}\r
-\r
-\r
-\r
-function jmolLoadAjaxJS(url, userid, optionalscript,targetSuffix){\r
- userid || (userid="0")\r
- targetSuffix || (targetSuffix="0")\r
- optionalscript || (optionalscript="")\r
- _jmol.optionalscript=optionalscript\r
- _jmol.thismodel=userid\r
- _jmol.thistargetsuffix=targetSuffix\r
- _jmol.modelArray = []\r
- _jmol.thisurl = url\r
- url+="&returnFunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix\r
- _jmolDomScriptLoad(url)\r
-}\r
-\r
-\r
-//// in case Jmol library has already been loaded:\r
-\r
-}catch(e){}\r
-\r
-///////////////moving atoms //////////////\r
-\r
-// HIGHLY experimental!!\r
-\r
-function jmolSetAtomCoord(i,x,y,z,targetSuffix){\r
-    _jmolCheckBrowser();\r
-      var applet=_jmolGetApplet(targetSuffix);\r
-      if (applet) applet.getProperty('jmolViewer').setAtomCoord(i,x,y,z)\r
-}\r
-\r
-function jmolSetAtomCoordRelative(i,x,y,z,targetSuffix){\r
-    _jmolCheckBrowser();\r
-      var applet=_jmolGetApplet(targetSuffix);\r
-      if (applet) applet.getProperty('jmolViewer').setAtomCoordRelative(i,x,y,z)\r
-}\r
-\r
-\r
-///////////////applet fake for testing buttons/////////////\r
-\r
-\r
-if(_jmol.useNoApplet){\r
-       jmolApplet = function(w){\r
-               var s="<table style='background-color:black' width="+w+"><tr height="+w+">"\r
-               +"<td align=center valign=center style='background-color:white'>"\r
-               +"Applet would be here"\r
-               +"<p><textarea id=fakeApplet rows=5 cols=50></textarea>"\r
-               +"</td></tr></table>"\r
-               return _jmolDocumentWrite(s)\r
-       }\r
-\r
-       _jmolFindApplet = function(){return jmolApplet0}\r
-\r
-       jmolApplet0 = {\r
-        script: function(script){document.getElementById("fakeApplet").value="\njmolScript:\n"+script}\r
-       ,scriptWait: function(script){document.getElementById("fakeApplet").value="\njmolScriptWait:\n"+script} \r
-       ,loadInline: function(data,script){document.getElementById("fakeApplet").value="\njmolLoadInline data:\n"+data+"\n\nscript:\n"+script}\r
-       }\r
-}\r
-\r
-\r
-///////////////////////////////////////////\r
-\r
-  //  This should no longer be needed, jmolResizeApplet() is better; kept for backwards compatibility\r
-  /*\r
-       Resizes absolutely (pixels) or by percent of window (w or h 0.5 means 50%).\r
-       targetSuffix is optional and defaults to zero (first applet in page).\r
-       Both w and h are optional, but needed if you want to use targetSuffix.\r
-               h defaults to w\r
-               w defaults to 100% of window\r
-       If either w or h is between 0 and 1, then it is taken as percent/100.\r
-       If either w or h is greater than 1, then it is taken as a size (pixels). \r
-       */\r
-function jmolResize(w,h,targetSuffix) {\r
- _jmol.alerted = true;\r
- var percentW = (!w ? 100 : w <= 1  && w > 0 ? w * 100 : 0);\r
- var percentH = (!h ? percentW : h <= 1 && h > 0 ? h * 100 : 0);\r
- if (_jmol.browser=="msie") {\r
-   var width=document.body.clientWidth;\r
-   var height=document.body.clientHeight;\r
- } else {\r
-   var netscapeScrollWidth=15;\r
-   var width=window.innerWidth - netscapeScrollWidth;\r
-   var height=window.innerHeight-netscapeScrollWidth;\r
- }\r
- var applet = _jmolGetApplet(targetSuffix);\r
- if(!applet)return;\r
- applet.style.width = (percentW ? width * percentW/100 : w)+"px";\r
- applet.style.height = (percentH ? height * percentH/100 : (h ? h : w))+"px";\r
- //title=width +  " " + height + " " + (new Date());\r
-}\r
-\r
-// 13 Jun 09 -- makes jmolResize() obsolete  (kept for backwards compatibility)\r
-function jmolResizeApplet(size,targetSuffix) {\r
- // See _jmolGetAppletSize() for the formats accepted as size [same used by jmolApplet()]\r
- //  Special case: an empty value for width or height is accepted, meaning no change in that dimension.\r
- _jmol.alerted = true;\r
- var applet = _jmolGetApplet(targetSuffix);\r
- if(!applet)return;\r
- var sz = _jmolGetAppletSize(size, "px");\r
- sz[0] && (applet.style.width = sz[0]);\r
- sz[1] && (applet.style.height = sz[1]);\r
-}\r
-\r
-function _jmolGetAppletSize(size, units) {\r
-       /* Accepts single number or 2-value array, each one can be one of:\r
-          percent (text string ending %), decimal 0 to 1 (percent/100), number, or text string (interpreted as nr.)\r
-          [width, height] array of strings is returned, with units added if specified.\r
-          Percent is relative to container div or element (which should have explicitly set size).\r
-       */\r
-  var width, height;\r
-  if ( (typeof size) == "object" && size != null ) {\r
-    width = size[0]; height = size[1];\r
-  } else {\r
-    width = height = size;\r
-  }\r
-  return [_jmolFixDim(width, units), _jmolFixDim(height, units)];\r
-}\r
-\r
-function _jmolFixDim(x, units) {\r
-  var sx = "" + x;\r
-  return (sx.length == 0 ? (units ? "" : _jmol.allowedJmolSize[2])\r
-       : sx.indexOf("%") == sx.length-1 ? sx \r
-       : (x = parseFloat(x)) <= 1 && x > 0 ? x * 100 + "%"\r
-       : (isNaN(x = Math.floor(x)) ? _jmol.allowedJmolSize[2]\r
-               : x < _jmol.allowedJmolSize[0] ? _jmol.allowedJmolSize[0]\r
-           : x > _jmol.allowedJmolSize[1] ? _jmol.allowedJmolSize[1] \r
-        : x) + (units ? units : ""));\r
-}\r
-\r
-\r
-\r
-\r
+/* 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 <span> 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 <label> 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
+// bh 3/2011  -- added jmolLoadAjax_STOLAF_NIH
+
+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 = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input type='button' name='" + id + "' id='" + id +
+          "' value='" + label +
+          "' onclick='_jmolClick(this," + scriptIndex + _jmol.targetText +
+          ")' onmouseover='_jmolMouseOver(" + scriptIndex +
+          ");return true' onmouseout='_jmolMouseOut()' " +
+          _jmol.buttonCssText + " /></span>";
+  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 = "</span>"
+  var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input type='checkbox' name='" + id + "' id='" + id +
+          "' onclick='_jmolCbClick(this," +
+          indexChecked + "," + indexUnchecked + _jmol.targetText +
+          ")' onmouseover='_jmolCbOver(this," + indexChecked + "," +
+          indexUnchecked +
+          ");return true' onmouseout='_jmolMouseOut()' " +
+         (isChecked ? "checked='true' " : "")+ _jmol.checkboxCssText + " />" 
+  if (labelHtml.toLowerCase().indexOf("<td>")>=0) {
+       t += eospan
+       eospan = "";
+  }
+  t += "<label for=\"" + id + "\">" + labelHtml + "</label>" +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 = "&nbsp; ");
+  var len = arrayOfRadioButtons.length;
+  jmolStartNewRadioGroup();
+  groupName || (groupName = "jmolRadioGroup" + (_jmol.radioGroupCount - 1));
+  var t = "<span id='"+(id ? id : groupName)+"'>";
+  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+="</span>"
+  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 = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><a name='" + id + "' id='" + id + 
+          "' href='javascript:_jmolClick(this," + scriptIndex + _jmol.targetText + ");' onmouseover='_jmolMouseOver(" + scriptIndex +
+          ");return true;' onmouseout='_jmolMouseOut()' " +
+          _jmol.linkCssText + ">" + label + "</a></span>";
+  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 = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input name='" + id + "' id='" + id + 
+          "' size='"+size+"' onkeypress='_jmolCommandKeyPress(event,\""+id+"\"" + _jmol.targetText + ")'><input type=button value = '"+label+"' onclick='jmolScript(document.getElementById(\""+id+"\").value" + _jmol.targetText + ")' /></span>";
+  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 = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><select name='" + id + "' id='" + id +
+            "' onChange='_jmolMenuSelected(this" + _jmol.targetText + ")'" +
+            sizeText + _jmol.menuCssText + ">";
+    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 += "<optgroup label='" + text + "'>";          
+         } else if (script=="#optgroupEnd") {
+        t += "</optgroup>";      
+         } else {              
+        var scriptIndex = _jmolAddScript(script);
+        var selectedText = isSelected ? "' selected='true'>" : "'>";
+        t += "<option value='" + scriptIndex + selectedText + text + "</option>";
+      }
+    }
+    t += "</select></span>";
+    if (_jmol.debugAlert)
+      alert(t);
+    return _jmolDocumentWrite(t);
+  }
+}
+
+function jmolHtml(html) {
+  return _jmolDocumentWrite(html);
+}
+
+function jmolBr() {
+  return _jmolDocumentWrite("<br />");
+}
+
+////////////////////////////////////////////////////////////////
+// advanced scripting functions
+////////////////////////////////////////////////////////////////
+
+function jmolDebugAlert(enableAlerts) {
+  _jmol.debugAlert = (enableAlerts == undefined || enableAlerts)
+}
+
+function jmolAppletInline(size, inlineModel, script, nameSuffix) {
+  _jmolInitCheck();
+  return _jmolApplet(size, _jmolSterilizeInline(inlineModel),
+                     script, nameSuffix);
+}
+
+function jmolSetTarget(targetSuffix) {
+  _jmol.targetSuffix = targetSuffix;
+  _jmol.targetText = targetSuffix ? ",\"" + targetSuffix + "\"" : ",0";
+}
+
+function jmolScript(script, targetSuffix) {
+  if (script) {
+    _jmolCheckBrowser();
+    if (targetSuffix == "all") {
+      with (_jmol) {
+       for (var i = 0; i < appletSuffixes.length; ++i) {
+         var applet = _jmolGetApplet(appletSuffixes[i]);
+          if (applet) applet.script(script);
+        }
+      }
+    } else {
+      var applet=_jmolGetApplet(targetSuffix);
+      if (applet) applet.script(script);
+    }
+  }
+}
+
+function jmolLoadInline(model, targetSuffix) {
+  if (!model)return "ERROR: NO MODEL"
+  var applet=_jmolGetApplet(targetSuffix);
+  if (!applet)return "ERROR: NO APPLET"
+  if (typeof(model) == "string")
+    return applet.loadInlineString(model, "", false);
+  else
+    return applet.loadInlineArray(model, "", false);
+}
+
+
+function jmolLoadInlineScript(model, script, targetSuffix) {
+  if (!model)return "ERROR: NO MODEL"
+  var applet=_jmolGetApplet(targetSuffix);
+  if (!applet)return "ERROR: NO APPLET"
+  return applet.loadInlineString(model, script, false);
+}
+
+
+function jmolLoadInlineArray(ModelArray, script, targetSuffix) {
+  if (!model)return "ERROR: NO MODEL"
+  script || (script="")
+  var applet=_jmolGetApplet(targetSuffix);
+  if (!applet)return "ERROR: NO APPLET"
+  try {
+    return applet.loadInlineArray(ModelArray, script, false);
+  } catch (err) {
+    //IE 7 bug
+    return applet.loadInlineString(ModelArray.join("\n"), script, false);
+  }
+}
+
+function jmolAppendInlineArray(ModelArray, script, targetSuffix) {
+  if (!model)return "ERROR: NO MODEL"
+  script || (script="")
+  var applet=_jmolGetApplet(targetSuffix);
+  if (!applet)return "ERROR: NO APPLET"
+  try {
+    return applet.loadInlineArray(ModelArray, script, true);
+  } catch (err) {
+    //IE 7 bug
+    return applet.loadInlineString(ModelArray.join("\n"), script, true);
+  }
+}
+
+function jmolAppendInlineScript(model, script, targetSuffix) {
+  if (!model)return "ERROR: NO MODEL"
+  var applet=_jmolGetApplet(targetSuffix);
+  if (!applet)return "ERROR: NO APPLET"
+  return applet.loadInlineString(model, script, true);
+}
+
+function jmolCheckBrowser(action, urlOrMessage, nowOrLater) {
+  if (typeof action == "string") {
+    action = action.toLowerCase();
+    action == "alert" || action == "redirect" || action == "popup" || (action = null);
+  }
+  if (typeof action != "string")
+    alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +
+          "action must be 'alert', 'redirect', or 'popup'");
+  else {
+    if (typeof urlOrMessage != "string")
+      alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +
+            "urlOrMessage must be a string");
+    else {
+      _jmol.checkBrowserAction = action;
+      _jmol.checkBrowserUrlOrMessage = urlOrMessage;
+    }
+  }
+  if (typeof nowOrLater == "string" && nowOrLater.toLowerCase() == "now")
+    _jmolCheckBrowser();
+}
+
+////////////////////////////////////////////////////////////////
+// Cascading Style Sheet Class support
+////////////////////////////////////////////////////////////////
+
+function jmolSetAppletCssClass(appletCssClass) {
+  if (_jmol.hasGetElementById) {
+    _jmol.appletCssClass = appletCssClass;
+    _jmol.appletCssText = appletCssClass ? "class='" + appletCssClass + "' " : "";
+  }
+}
+
+function jmolSetButtonCssClass(buttonCssClass) {
+  if (_jmol.hasGetElementById) {
+    _jmol.buttonCssClass = buttonCssClass;
+    _jmol.buttonCssText = buttonCssClass ? "class='" + buttonCssClass + "' " : "";
+  }
+}
+
+function jmolSetCheckboxCssClass(checkboxCssClass) {
+  if (_jmol.hasGetElementById) {
+    _jmol.checkboxCssClass = checkboxCssClass;
+    _jmol.checkboxCssText = checkboxCssClass ? "class='" + checkboxCssClass + "' " : "";
+  }
+}
+
+function jmolSetRadioCssClass(radioCssClass) {
+  if (_jmol.hasGetElementById) {
+    _jmol.radioCssClass = radioCssClass;
+    _jmol.radioCssText = radioCssClass ? "class='" + radioCssClass + "' " : "";
+  }
+}
+
+function jmolSetLinkCssClass(linkCssClass) {
+  if (_jmol.hasGetElementById) {
+    _jmol.linkCssClass = linkCssClass;
+    _jmol.linkCssText = linkCssClass ? "class='" + linkCssClass + "' " : "";
+  }
+}
+
+function jmolSetMenuCssClass(menuCssClass) {
+  if (_jmol.hasGetElementById) {
+    _jmol.menuCssClass = menuCssClass;
+    _jmol.menuCssText = menuCssClass ? "class='" + menuCssClass + "' " : "";
+  }
+}
+
+////////////////////////////////////////////////////////////////
+// functions for INTERNAL USE ONLY which are subject to change
+// use at your own risk ... you have been WARNED!
+////////////////////////////////////////////////////////////////
+var _jmol = {
+  currentDocument: document,
+
+  debugAlert: false,
+  
+  codebase: "",
+  modelbase: ".",
+  
+  appletCount: 0,
+  appletSuffixes: [],
+  appletWindow: null,
+  allowedJmolSize: [25, 2048, 300],   // min, max, default (pixels)
+         /*  By setting the _jmol.allowedJmolSize[] variable in the webpage 
+             before calling jmolApplet(), limits for applet size can be overriden.
+                   2048 standard for GeoWall (http://geowall.geo.lsa.umich.edu/home.html)
+         */  
+  buttonCount: 0,
+  checkboxCount: 0,
+  linkCount: 0,
+  cmdCount: 0,
+  menuCount: 0,
+  radioCount: 0,
+  radioGroupCount: 0,
+  
+  appletCssClass: null,
+  appletCssText: "",
+  buttonCssClass: null,
+  buttonCssText: "",
+  checkboxCssClass: null,
+  checkboxCssText: "",
+  java_arguments: "-Xmx512m",
+  radioCssClass: null,
+  radioCssText: "",
+  linkCssClass: null,
+  linkCssText: "",
+  menuCssClass: null,
+  menuCssText: "",
+  
+  targetSuffix: 0,
+  targetText: ",0",
+  scripts: [""],
+  params: {
+       syncId: ("" + Math.random()).substring(3),
+       progressbar: "true",
+       progresscolor: "blue",
+       boxbgcolor: "black",
+       boxfgcolor: "white",
+       boxmessage: "Downloading JmolApplet ..."
+  },
+  ua: navigator.userAgent.toLowerCase(),
+  // uaVersion: parseFloat(navigator.appVersion),  // not used
+  
+  os: "unknown",
+  browser: "unknown",
+  browserVersion: 0,
+  hasGetElementById: !!document.getElementById,
+  isJavaEnabled: navigator.javaEnabled(),
+  // isNetscape47Win: false,  // not used, N4.7 is no longer supported even for detection
+  useIEObject: false,
+  useHtml4Object: false,
+  
+  windowsClassId: "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93",
+  windowsCabUrl:
+   "http://java.sun.com/update/1.6.0/jinstall-6u22-windows-i586.cab",
+
+  isBrowserCompliant: false,
+  isJavaCompliant: false,
+  isFullyCompliant: false,
+
+  initialized: false,
+  initChecked: false,
+  
+  browserChecked: false,
+  checkBrowserAction: "alert",
+  checkBrowserUrlOrMessage: null,
+
+  archivePath: null, // JmolApplet0.jar OR JmolAppletSigned0.jar
+
+  previousOnloadHandler: null,
+
+  jmoljar: null,  
+  useNoApplet: false,
+
+  ready: {}
+}
+
+with (_jmol) {
+  function _jmolTestUA(candidate) {
+    var ua = _jmol.ua;
+    var index = ua.indexOf(candidate);
+    if (index < 0)
+      return false;
+    _jmol.browser = candidate;
+    _jmol.browserVersion = parseFloat(ua.substring(index+candidate.length+1));
+    return true;
+  }
+  
+  function _jmolTestOS(candidate) {
+    if (_jmol.ua.indexOf(candidate) < 0)
+      return false;
+    _jmol.os = candidate;
+    return true;
+  }
+  
+  _jmolTestUA("konqueror") ||
+  _jmolTestUA("webkit") ||
+  _jmolTestUA("omniweb") ||
+  _jmolTestUA("opera") ||
+  _jmolTestUA("webtv") ||
+  _jmolTestUA("icab") ||
+  _jmolTestUA("msie") ||
+  (_jmol.ua.indexOf("compatible") < 0 && _jmolTestUA("mozilla")); //Netscape, Mozilla, Seamonkey, Firefox and anything assimilated
+  
+  _jmolTestOS("linux") ||
+  _jmolTestOS("unix") ||
+  _jmolTestOS("mac") ||
+  _jmolTestOS("win");
+
+  /* not used:
+       isNetscape47Win = (os == "win" && browser == "mozilla" &&
+                     browserVersion >= 4.78 && browserVersion <= 4.8);
+       */
+
+  if (os == "win") {
+    isBrowserCompliant = hasGetElementById;
+  } else if (os == "mac") { // mac is the problem child :-(
+    if (browser == "mozilla" && browserVersion >= 5) {
+      // miguel 2004 11 17
+      // checking the plugins array does not work because
+      // Netscape 7.2 OS X still has Java 1.3.1 listed even though
+      // javaplugin.sf.net is installed to upgrade to 1.4.2
+      eval("try {var v = java.lang.System.getProperty('java.version');" +
+           " _jmol.isBrowserCompliant = v >= '1.4.2';" +
+           " } catch (e) { }");
+    } else if (browser == "opera" && browserVersion <= 7.54) {
+      isBrowserCompliant = false;
+    } else {
+      isBrowserCompliant = hasGetElementById &&
+        !((browser == "msie") ||
+          (browser == "webkit" && browserVersion < 125.12));
+    }
+  } else if (os == "linux" || os == "unix") {
+    if (browser == "konqueror" && browserVersion <= 3.3)
+      isBrowserCompliant = false;
+    else
+      isBrowserCompliant = hasGetElementById;
+  } else { // other OS
+    isBrowserCompliant = hasGetElementById;
+  }
+
+  // possibly more checks in the future for this
+  isJavaCompliant = isJavaEnabled;
+
+  isFullyCompliant = isBrowserCompliant && isJavaCompliant;
+
+  useIEObject = (os == "win" && browser == "msie" && browserVersion >= 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.<br />\n" +
+        "Check the warning message from your browser and/or enable Java applets in<br />\n" +
+        "your web browser preferences, or install the Java Runtime Environment from <a href='http://www.java.com'>www.java.com</a><br />";
+if (noJavaMsg2==undefined) var noJavaMsg2 = 
+        "You do not have the<br />\n" +
+        "Java Runtime Environment<br />\n" +
+        "installed for applet support.<br />\n" +
+        "Visit <a href='http://www.java.com'>www.java.com</a>";
+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 = 
+        "<object name='jmolApplet" + nameSuffix +
+        "' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +
+                               widthAndHeight + "\n";
+      tFooter = "</object>";
+    }
+    if (java_arguments)
+      params.java_arguments = java_arguments;
+    if (useIEObject) { // use MSFT IE6 object tag with .cab file reference
+      tHeader += " classid='" + windowsClassId + "'\n" +
+      (windowsCabUrl ? " codebase='" + windowsCabUrl + "'\n" : "") + ">\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 <object> 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 = 
+        "<applet name='jmolApplet" + nameSuffix +
+        "' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +
+                               widthAndHeight + "\n" +
+        " code='JmolApplet'" +
+        " archive='" + archivePath + "' codebase='" + codebase + "'\n" +
+        " mayscript='true'>\n";
+      tFooter = "</applet>";
+    }
+    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 =
+        "<p style='background-color:yellow; color:black; " +
+               szX + ";" + szY + ";" +
+        // why doesn't this vertical-align work?
+       "text-align:center;vertical-align:middle;'>\n" +
+               noJavaMsg +
+        "</p>";
+    } else {
+      visitJava =
+        "<table bgcolor='yellow'><tr>" +
+        "<td align='center' valign='middle' " + widthAndHeight + "><font color='black'>\n" +
+               noJavaMsg2 +
+        "</font></td></tr></table>";
+    }
+    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+="  <param name='"+i+"' value='"+_jmol.params[i]+"' />\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, "&#39;");
+  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, "&#39;");
+  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 = "</span>"
+  var t = "<span id=\"span_"+id+"\""+(title ? " title=\"" + title + "\"":"")+"><input name='" 
+       + groupName + "' id='"+id+"' type='radio' onclick='_jmolClick(this," +
+         scriptIndex + _jmol.targetText + ");return true;' onmouseover='_jmolMouseOver(" +
+         scriptIndex + ");return true;' onmouseout='_jmolMouseOut()' " +
+        (isChecked ? "checked='true' " : "") + _jmol.radioCssText + " />"
+  if (labelHtml.toLowerCase().indexOf("<td>")>=0) {
+       t += eospan
+       eospan = "";
+  }
+  t += "<label for=\"" + id + "\">" + labelHtml + "</label>" +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;i<A.length;i++){
+       sout+="\n"
+       if(typeof(A[i]) == "object"||typeof(A[i]) == "array"){
+               sout+=_jmolEnumerateObject(A[i],key+"["+i+"]")
+       }else{
+               sout+=key+"["+i+"]="+(typeof(A[i]) == "string" && A[i]!="null"?"\""+A[i].replace(/\"/g,"\\\"")+"\"":A[i])
+       }
+    }
+ }else{
+    if(key != ""){
+       sout+=key+"={}"
+       key+="."
+    }
+    
+    for(var i in A){
+       sout+="\n"
+       if(typeof(A[i]) == "object"||typeof(A[i]) == "array"){
+               sout+=_jmolEnumerateObject(A[i],key+i)
+       }else{
+               sout+=key+i+"="+(typeof(A[i]) == "string" && A[i]!="null"?"\""+A[i].replace(/\"/g,"\\\"")+"\"":A[i])
+       }
+    }
+ } 
+ return sout
+}
+
+
+function _jmolSortKey0(a,b){
+ return (a[0]<b[0]?1:a[0]>b[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<A[i].length;j++)B[B.length]=A[i][j]
+ if(B.length == 0) return
+ B=B.sort(_jmolSortKey0)
+ return B
+}
+
+/////////additional extensions //////////
+
+
+function _jmolDomScriptLoad(URL){
+ //open(URL) //to debug
+ _jmol.servercall=URL
+ var node = document.getElementById("_jmolScriptNode")
+ if (node && _jmol.browser!="msie"){
+    document.getElementsByTagName("HEAD")[0].removeChild(node)
+    node=null
+ }
+ if (node) {
+   node.setAttribute("src",URL)
+ } else {
+   node=document.createElement("script")
+   node.setAttribute("id","_jmolScriptNode")
+   node.setAttribute("type","text/javascript")
+   node.setAttribute("src",URL)
+   document.getElementsByTagName("HEAD")[0].appendChild(node)
+ }
+}
+
+
+function _jmolExtractPostData(url){
+ S=url.split("&POST:")
+ var s=""
+ for(var i=1;i<S.length;i++){
+       KV=S[i].split("=")
+       s+="&POSTKEY"+i+"="+KV[0]
+       s+="&POSTVALUE"+i+"="+KV[1]
+ }
+ return "&url="+escape(S[0])+s
+}
+
+function _jmolLoadModel(targetSuffix,remoteURL,array,isError,errorMessage){
+ //called by server, but in client
+ //overload this function to customize return
+ _jmol.remoteURL=remoteURL
+ isError && alert(errorMessage)
+ jmolLoadInlineScript(array.join("\n"),_jmol.optionalscript,targetSuffix)
+}
+
+//////////user property/status functions/////////
+
+function jmolGetStatus(strStatus,targetSuffix){
+ return _jmolSortMessages(jmolGetPropertyAsArray("jmolStatus",strStatus,targetSuffix))
+}
+
+function jmolGetPropertyAsArray(sKey,sValue,targetSuffix) {
+ return _jmolEvalJSON(jmolGetPropertyAsJSON(sKey,sValue,targetSuffix),sKey)
+}
+
+function jmolGetPropertyAsString(sKey,sValue,targetSuffix) {
+ var applet = _jmolGetApplet(targetSuffix);
+ sValue == undefined && (sValue="");
+ return (applet ? applet.getPropertyAsString(sKey,sValue) + "" : "")
+}
+
+function jmolGetPropertyAsJSON(sKey,sValue,targetSuffix) {
+ sValue == undefined && (sValue = "")
+ var applet = _jmolGetApplet(targetSuffix);
+ try {
+  return (applet ? applet.getPropertyAsJSON(sKey,sValue) + "" : "")
+ } catch(e) {
+  return ""
+ }
+}
+
+function jmolGetPropertyAsJavaObject(sKey,sValue,targetSuffix) {
+ sValue == undefined && (sValue = "")
+ var applet = _jmolGetApplet(targetSuffix);
+ return (applet ? applet.getProperty(sKey,sValue) : null)
+}
+
+
+function jmolDecodeJSON(s) {
+ return _jmolEnumerateObject(_jmolEvalJSON(s),"")
+}
+
+
+///////// synchronous scripting ////////
+
+function jmolScriptWait(script, targetSuffix) {
+  targetSuffix == undefined && (targetSuffix="0")
+  var Ret=jmolScriptWaitAsArray(script, targetSuffix)
+  var s = ""
+  for(var i=Ret.length;--i>=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(/\<param/,"\n<param name='"+name+"' value='"+value+"' />\n<param"))
+}
+
+///////////////auto load Research Consortium for Structural Biology (RCSB) data ///////////
+
+function jmolLoadAjax_STOLAF_RCSB(fileformat,pdbid,optionalscript,targetSuffix){
+
+ _jmol.thismodel || (_jmol.thismodel = "1crn")
+ _jmol.serverURL || (_jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm")
+ _jmol.RCSBserver || (_jmol.RCSBserver="http://www.rcsb.org")
+ _jmol.defaultURL_RCSB || (_jmol.defaultURL_RCSB=_jmol.RCSBserver+"/pdb/files/1CRN.CIF")
+ fileformat || (fileformat="PDB")
+ pdbid || (pdbid=prompt("Enter a 4-digit PDB ID:",_jmol.thismodel))
+ if(!pdbid || pdbid.length != 4)return ""
+ targetSuffix || (targetSuffix="0")
+ optionalscript || (optionalscript="")
+ var url=_jmol.defaultURL_RCSB.replace(/1CRN/g,pdbid.toUpperCase())
+ fileformat=="CIF" || (url=url.replace(/CIF/,fileformat))
+ _jmol.optionalscript=optionalscript
+ _jmol.thismodel=pdbid
+ _jmol.thistargetsuffix=targetSuffix
+ _jmol.thisurl=url
+ _jmol.modelArray = []
+ url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)
+ _jmolDomScriptLoad(url)
+ return url
+}
+
+
+///////////////auto load NIH CACTVS data -- compound name or SMILES ///////////
+
+function jmolLoadAjax_STOLAF_NIH(compoundid,optionalscript,targetSuffix){
+ _jmol.thismodel || (_jmol.thismodel = "aspirin")
+ _jmol.serverURL || (_jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm")
+ _jmol.defaultURL_NIH || (_jmol.defaultURL_NIH="http://cactus.nci.nih.gov/chemical/structure/FILE/file?format=sdf&get3d=True")
+ compoundid || (compoundid=prompt("Enter a compound name or a SMILES string:",_jmol.thismodel))
+ if(!compoundid)return ""
+ targetSuffix || (targetSuffix="0")
+ optionalscript || (optionalscript="")
+ var url=_jmol.defaultURL_NIH.replace(/FILE/g,compoundid)
+ _jmol.optionalscript=optionalscript
+ _jmol.thismodel=compoundid
+ _jmol.thistargetsuffix=targetSuffix
+ _jmol.thisurl=url
+ _jmol.modelArray = []
+ url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)
+ _jmolDomScriptLoad(url)
+ return url
+}
+
+
+/////////////// St. Olaf College AJAX server -- ANY URL ///////////
+
+function jmolLoadAjax_STOLAF_ANY(url, userid, optionalscript,targetSuffix){
+ _jmol.serverURL="http://fusion.stolaf.edu/chemistry/jmol/getajaxjs.cfm"
+ _jmol.thisurlANY || (_jmol.thisurlANY = "http://www.stolaf.edu/depts/chemistry/mo/struc/data/ycp3-1.mol")
+ url || (url=prompt("Enter any (uncompressed file) URL:", _jmol.thisurlANY))
+ userid || (userid="0")
+ targetSuffix || (targetSuffix="0")
+ optionalscript || (optionalscript="")
+ _jmol.optionalscript=optionalscript
+ _jmol.thistargetsuffix=targetSuffix
+ _jmol.modelArray = []
+ _jmol.thisurl = url
+ url=_jmol.serverURL+"?returnfunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix+_jmolExtractPostData(url)
+ _jmolDomScriptLoad(url)
+}
+
+
+/////////////// Mineralogical Society of America (MSA) data /////////
+
+function jmolLoadAjax_MSA(key,value,optionalscript,targetSuffix){
+
+ _jmol.thiskeyMSA || (_jmol.thiskeyMSA = "mineral")
+ _jmol.thismodelMSA || (_jmol.thismodelMSA = "quartz")
+ _jmol.ajaxURL_MSA || (_jmol.ajaxURL_MSA="http://rruff.geo.arizona.edu/AMS/result.php?mineral=quartz&viewing=ajaxjs")
+ key || (key=prompt("Enter a field:", _jmol.thiskeyMSA))
+ if(!key)return ""
+ value || (value=prompt("Enter a "+key+":", _jmol.thismodelMSA))
+ if(!value)return ""
+ targetSuffix || (targetSuffix="0")
+ optionalscript || (optionalscript="")
+ optionalscript == 1 && (optionalscript='load "" {1 1 1}')
+ var url=_jmol.ajaxURL_MSA.replace(/mineral/g,key).replace(/quartz/g,value)
+ _jmol.optionalscript=optionalscript
+ _jmol.thiskeyMSA=key
+ _jmol.thismodelMSA=value
+ _jmol.thistargetsuffix=targetSuffix
+ _jmol.thisurl=url
+ _jmol.modelArray = []
+ loadModel=_jmolLoadModel
+ _jmolDomScriptLoad(url)
+ return url
+}
+
+
+
+function jmolLoadAjaxJS(url, userid, optionalscript,targetSuffix){
+ userid || (userid="0")
+ targetSuffix || (targetSuffix="0")
+ optionalscript || (optionalscript="")
+ _jmol.optionalscript=optionalscript
+ _jmol.thismodel=userid
+ _jmol.thistargetsuffix=targetSuffix
+ _jmol.modelArray = []
+ _jmol.thisurl = url
+ url+="&returnFunction=_jmolLoadModel&returnArray=_jmol.modelArray&id="+targetSuffix
+ _jmolDomScriptLoad(url)
+}
+
+
+//// in case Jmol library has already been loaded:
+
+}catch(e){}
+
+///////////////moving atoms //////////////
+
+// HIGHLY experimental!!
+
+function jmolSetAtomCoord(i,x,y,z,targetSuffix){
+    _jmolCheckBrowser();
+      var applet=_jmolGetApplet(targetSuffix);
+      if (applet) applet.getProperty('jmolViewer').setAtomCoord(i,x,y,z)
+}
+
+function jmolSetAtomCoordRelative(i,x,y,z,targetSuffix){
+    _jmolCheckBrowser();
+      var applet=_jmolGetApplet(targetSuffix);
+      if (applet) applet.getProperty('jmolViewer').setAtomCoordRelative(i,x,y,z)
+}
+
+
+///////////////applet fake for testing buttons/////////////
+
+
+if(_jmol.useNoApplet){
+       jmolApplet = function(w){
+               var s="<table style='background-color:black' width="+w+"><tr height="+w+">"
+               +"<td align=center valign=center style='background-color:white'>"
+               +"Applet would be here"
+               +"<p><textarea id=fakeApplet rows=5 cols=50></textarea>"
+               +"</td></tr></table>"
+               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 : ""));
+}
+
+
+
+
index 53698a4..72c062d 100755 (executable)
@@ -1,60 +1,60 @@
->FER_CAPAA Ferredoxin\r
------------------------------------------------------------ASYKVKLITPDGP\r
-IEFDCPDDVYILDQAEEAGHDLPYSCRAGSCSSCAGKIAGGAVDQTDGNFLDDDQLEEGWVLTCVAYPQSDV\r
-TIETHKEAELVG-\r
->FER_CAPAN Ferredoxin, chloroplast precursor\r
-MA------SVSATMISTSFMPRKPAVTSL-KPIPNVGE--ALFGLKS-A--NGGKVTCMASYKVKLITPDGP\r
-IEFDCPDNVYILDQAEEAGHDLPYSCRAGSCSSCAGKIAGGAVDQTDGNFLDDDQLEEGWVLTCVAYPQSDV\r
-TIETHKEAELVG-\r
->FER1_SOLLC Ferredoxin-1, chloroplast precursor\r
-MA------SISGTMISTSFLPRKPAVTSL-KAISNVGE--ALFGLKS-G--RNGRITCMASYKVKLITPEGP\r
-IEFECPDDVYILDQAEEEGHDLPYSCRAGSCSSCAGKVTAGSVDQSDGNFLDEDQEAAGFVLTCVAYPKGDV\r
-TIETHKEEELTA-\r
->Q93XJ9_SOLTU Ferredoxin I precursor\r
-MA------SISGTMISTSFLPRKPVVTSL-KAISNVGE--ALFGLKS-G--RNGRITCMASYKVKLITPDGP\r
-IEFECPDDVYILDQAEEEGHDLPYSCRAGSCSSCAGKVTAGTVDQSDGKFLDDDQEAAGFVLTCVAYPKCDV\r
-TIETHKEEELTA-\r
->FER1_PEA Ferredoxin-1, chloroplast precursor\r
-MATT---PALYGTAVSTSFLRTQPMPMSV-TTTKAFSN--GFLGLKT-SLKRGDLAVAMASYKVKLVTPDGT\r
-QEFECPSDVYILDHAEEVGIDLPYSCRAGSCSSCAGKVVGGEVDQSDGSFLDDEQIEAGFVLTCVAYPTSDV\r
-VIETHKEEDLTA-\r
->Q7XA98_TRIPR Ferredoxin I\r
-MATT---PALYGTAVSTSFMRRQPVPMSV-ATTTTTKAFPSGFGLKSVSTKRGDLAVAMATYKVKLITPEGP\r
-QEFDCPDDVYILDHAEEVGIELPYSCRAGSCSSCAGKVVNGNVNQEDGSFLDDEQIEGGWVLTCVAFPTSDV\r
-TIETHKEEELTA-\r
->FER1_MESCR Ferredoxin-1, chloroplast precursor\r
-MAAT--TAALSGATMSTAFAPK--TPPMTAALPTNVGR--ALFGLKS-SASR-GRVTAMAAYKVTLVTPEGK\r
-QELECPDDVYILDAAEEAGIDLPYSCRAGSCSSCAGKVTSGSVNQDDGSFLDDDQIKEGWVLTCVAYPTGDV\r
-TIETHKEEELTA-\r
->FER1_SPIOL Ferredoxin-1, chloroplast precursor\r
-MAAT--TTTMMG--MATTFVPKPQAPPMMAALPSNTGR--SLFGLKT-GSR--GGRMTMAAYKVTLVTPTGN\r
-VEFQCPDDVYILDAAEEEGIDLPYSCRAGSCSSCAGKLKTGSLNQDDQSFLDDDQIDEGWVLTCAAYPVSDV\r
-TIETHKEEELTA-\r
->FER3_RAPSA Ferredoxin, leaf L-A\r
------------------------------------------------------------ATYKVKFITPEGE\r
-QEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSFLDDDQIAEGFVLTCAAYPTSDV\r
-TIETHREEDMV--\r
->FER1_ARATH Ferredoxin-1, chloroplast precursor\r
-MAST----ALSSAIVGTSFIRRSPAPISLRSLPSANTQ--SLFGLKS-GTARGGRVTAMATYKVKFITPEGE\r
-LEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSFLDDEQIGEGFVLTCAAYPTSDV\r
-TIETHKEEDIV--\r
->FER_BRANA Ferredoxin\r
------------------------------------------------------------ATYKVKFITPEGE\r
-QEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGFVDQSDESFLDDDQIAEGFVLTCAAYPTSDV\r
-TIETHKEEELV--\r
->FER2_ARATH Ferredoxin-2, chloroplast precursor\r
-MAST----ALSSAIVSTSFLRRQQTPISLRSLPFANTQ--SLFGLKS-STARGGRVTAMATYKVKFITPEGE\r
-QEVECEEDVYVLDAAEEAGLDLPYSCRAGSCSSCAGKVVSGSIDQSDQSFLDDEQMSEGYVLTCVAYPTSDV\r
-VIETHKEEAIM--\r
->Q93Z60_ARATH At1g10960/T19D16_12\r
-MAST----ALSSAIVSTSFLRRQQTPISLRSLPFANTQ--SLFGLKS-STARGGRVTAMATYKVKFITPEGE\r
-QEVECEEDVYVLDAAEEAGLDLPYSCRAGSCSSCAGKVVSGSIDQSDQSFLDD-------------------\r
--------------\r
->FER1_MAIZE Ferredoxin-1, chloroplast precursor\r
-MATVLGSPRAPAFFFSSSSLRAAPAPTAV--ALPAAKV--GIMGRSA-SSRR--RLRAQATYNVKLITPEGE\r
-VELQVPDDVYILDQAEEDGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSYLDDGQIADGWVLTCHAYPTSDV\r
-VIETHKEEELTGA\r
->O80429_MAIZE Ferredoxin\r
-MAAT---------ALSMSILR---APPPCFSSPLRLRV--AVAKPLA-APMRRQLLRAQATYNVKLITPEGE\r
-VELQVPDDVYILDFAEEEGIDLPFSCRAGSCSSCAGKVVSGSVDQSDQSFLNDNQVADGWVLTCAAYPTSDV\r
-VIETHKEDDLL--\r
+>FER_CAPAA Ferredoxin
+-----------------------------------------------------------ASYKVKLITPDGP
+IEFDCPDDVYILDQAEEAGHDLPYSCRAGSCSSCAGKIAGGAVDQTDGNFLDDDQLEEGWVLTCVAYPQSDV
+TIETHKEAELVG-
+>FER_CAPAN Ferredoxin, chloroplast precursor
+MA------SVSATMISTSFMPRKPAVTSL-KPIPNVGE--ALFGLKS-A--NGGKVTCMASYKVKLITPDGP
+IEFDCPDNVYILDQAEEAGHDLPYSCRAGSCSSCAGKIAGGAVDQTDGNFLDDDQLEEGWVLTCVAYPQSDV
+TIETHKEAELVG-
+>FER1_SOLLC Ferredoxin-1, chloroplast precursor
+MA------SISGTMISTSFLPRKPAVTSL-KAISNVGE--ALFGLKS-G--RNGRITCMASYKVKLITPEGP
+IEFECPDDVYILDQAEEEGHDLPYSCRAGSCSSCAGKVTAGSVDQSDGNFLDEDQEAAGFVLTCVAYPKGDV
+TIETHKEEELTA-
+>Q93XJ9_SOLTU Ferredoxin I precursor
+MA------SISGTMISTSFLPRKPVVTSL-KAISNVGE--ALFGLKS-G--RNGRITCMASYKVKLITPDGP
+IEFECPDDVYILDQAEEEGHDLPYSCRAGSCSSCAGKVTAGTVDQSDGKFLDDDQEAAGFVLTCVAYPKCDV
+TIETHKEEELTA-
+>FER1_PEA Ferredoxin-1, chloroplast precursor
+MATT---PALYGTAVSTSFLRTQPMPMSV-TTTKAFSN--GFLGLKT-SLKRGDLAVAMASYKVKLVTPDGT
+QEFECPSDVYILDHAEEVGIDLPYSCRAGSCSSCAGKVVGGEVDQSDGSFLDDEQIEAGFVLTCVAYPTSDV
+VIETHKEEDLTA-
+>Q7XA98_TRIPR Ferredoxin I
+MATT---PALYGTAVSTSFMRRQPVPMSV-ATTTTTKAFPSGFGLKSVSTKRGDLAVAMATYKVKLITPEGP
+QEFDCPDDVYILDHAEEVGIELPYSCRAGSCSSCAGKVVNGNVNQEDGSFLDDEQIEGGWVLTCVAFPTSDV
+TIETHKEEELTA-
+>FER1_MESCR Ferredoxin-1, chloroplast precursor
+MAAT--TAALSGATMSTAFAPK--TPPMTAALPTNVGR--ALFGLKS-SASR-GRVTAMAAYKVTLVTPEGK
+QELECPDDVYILDAAEEAGIDLPYSCRAGSCSSCAGKVTSGSVNQDDGSFLDDDQIKEGWVLTCVAYPTGDV
+TIETHKEEELTA-
+>FER1_SPIOL Ferredoxin-1, chloroplast precursor
+MAAT--TTTMMG--MATTFVPKPQAPPMMAALPSNTGR--SLFGLKT-GSR--GGRMTMAAYKVTLVTPTGN
+VEFQCPDDVYILDAAEEEGIDLPYSCRAGSCSSCAGKLKTGSLNQDDQSFLDDDQIDEGWVLTCAAYPVSDV
+TIETHKEEELTA-
+>FER3_RAPSA Ferredoxin, leaf L-A
+-----------------------------------------------------------ATYKVKFITPEGE
+QEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSFLDDDQIAEGFVLTCAAYPTSDV
+TIETHREEDMV--
+>FER1_ARATH Ferredoxin-1, chloroplast precursor
+MAST----ALSSAIVGTSFIRRSPAPISLRSLPSANTQ--SLFGLKS-GTARGGRVTAMATYKVKFITPEGE
+LEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSFLDDEQIGEGFVLTCAAYPTSDV
+TIETHKEEDIV--
+>FER_BRANA Ferredoxin
+-----------------------------------------------------------ATYKVKFITPEGE
+QEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGFVDQSDESFLDDDQIAEGFVLTCAAYPTSDV
+TIETHKEEELV--
+>FER2_ARATH Ferredoxin-2, chloroplast precursor
+MAST----ALSSAIVSTSFLRRQQTPISLRSLPFANTQ--SLFGLKS-STARGGRVTAMATYKVKFITPEGE
+QEVECEEDVYVLDAAEEAGLDLPYSCRAGSCSSCAGKVVSGSIDQSDQSFLDDEQMSEGYVLTCVAYPTSDV
+VIETHKEEAIM--
+>Q93Z60_ARATH At1g10960/T19D16_12
+MAST----ALSSAIVSTSFLRRQQTPISLRSLPFANTQ--SLFGLKS-STARGGRVTAMATYKVKFITPEGE
+QEVECEEDVYVLDAAEEAGLDLPYSCRAGSCSSCAGKVVSGSIDQSDQSFLDD-------------------
+-------------
+>FER1_MAIZE Ferredoxin-1, chloroplast precursor
+MATVLGSPRAPAFFFSSSSLRAAPAPTAV--ALPAAKV--GIMGRSA-SSRR--RLRAQATYNVKLITPEGE
+VELQVPDDVYILDQAEEDGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSYLDDGQIADGWVLTCHAYPTSDV
+VIETHKEEELTGA
+>O80429_MAIZE Ferredoxin
+MAAT---------ALSMSILR---APPPCFSSPLRLRV--AVAKPLA-APMRRQLLRAQATYNVKLITPEGE
+VELQVPDDVYILDFAEEEGIDLPFSCRAGSCSSCAGKVVSGSVDQSDQSFLNDNQVADGWVLTCAAYPTSDV
+VIETHKEDDLL--
index 064d6bc..eba1dd9 100755 (executable)
@@ -1,61 +1,61 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>\r
-<!--\r
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)\r
- * Copyright (C) 2014 The Jalview Authors\r
- * \r
- * This file is part of Jalview.\r
- * \r
- * Jalview is free software: you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License \r
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r
- *  \r
- * Jalview is distributed in the hope that it will be useful, but \r
- * WITHOUT ANY WARRANTY; without even the implied warranty \r
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR \r
- * PURPOSE.  See the GNU General Public License for more details.\r
- * \r
- * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.\r
- * The Jalview Authors are detailed in the 'AUTHORS' file.\r
--->\r
-<!DOCTYPE helpset PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN" "http://java.sun.com/products/javahelp/helpset_1_0.dtd">\r
-<helpset version="1.0">\r
-   <!-- title -->\r
-   <title>Jalview Documentation</title>\r
-   <!-- maps -->\r
-   <maps>\r
-     <homeID>home</homeID>\r
-     <mapref location="help.jhm" />\r
-   </maps>\r
-   <!-- views -->\r
-   <view>\r
-      <name>TOC</name>\r
-      <label>Table Of Contents</label>\r
-      <type>javax.help.TOCView</type>\r
-      <data>helpTOC.xml</data>\r
-   </view>\r
-  <view>\r
-    <name>Search</name>\r
-    <label>Search</label>\r
-    <type>javax.help.SearchView</type>\r
-    <data engine="com.sun.java.help.search.DefaultSearchEngine">\r
-      JavaHelpSearch\r
-    </data>\r
-  </view>\r
-<presentation default="true" displayviews="true" displayviewimages="false">\r
-    <name>TOPALi</name>\r
-    <size width="800" height="700" />\r
-    <location x="200" y="50" />\r
-    <title>Jalview Documentation</title>\r
-    <image>helpIcon</image>\r
-    <toolbar>\r
-               <helpaction image="backIcon">javax.help.BackAction</helpaction>\r
-               <helpaction image="forwardIcon">javax.help.ForwardAction</helpaction>\r
-               <helpaction image="homeIcon">javax.help.HomeAction</helpaction>\r
-               <helpaction>javax.help.SeparatorAction</helpaction>\r
-               <!--<helpaction image="reloadIcon">javax.help.ReloadAction</helpaction>-->\r
-               <!--<helpaction image="addBookmarkIcon">javax.help.FavoritesAction</helpaction>-->\r
-               <helpaction image="printIcon">javax.help.PrintAction</helpaction>\r
-               <helpaction image="printSetupIcon">javax.help.PrintSetupAction</helpaction>\r
-       </toolbar>\r
-  </presentation>\r
-</helpset>\r
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Copyright (C) 2014 The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *  
+ * Jalview 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 General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+-->
+<!DOCTYPE helpset PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN" "http://java.sun.com/products/javahelp/helpset_1_0.dtd">
+<helpset version="1.0">
+   <!-- title -->
+   <title>Jalview Documentation</title>
+   <!-- maps -->
+   <maps>
+     <homeID>home</homeID>
+     <mapref location="help.jhm" />
+   </maps>
+   <!-- views -->
+   <view>
+      <name>TOC</name>
+      <label>Table Of Contents</label>
+      <type>javax.help.TOCView</type>
+      <data>helpTOC.xml</data>
+   </view>
+  <view>
+    <name>Search</name>
+    <label>Search</label>
+    <type>javax.help.SearchView</type>
+    <data engine="com.sun.java.help.search.DefaultSearchEngine">
+      JavaHelpSearch
+    </data>
+  </view>
+<presentation default="true" displayviews="true" displayviewimages="false">
+    <name>TOPALi</name>
+    <size width="800" height="700" />
+    <location x="200" y="50" />
+    <title>Jalview Documentation</title>
+    <image>helpIcon</image>
+    <toolbar>
+               <helpaction image="backIcon">javax.help.BackAction</helpaction>
+               <helpaction image="forwardIcon">javax.help.ForwardAction</helpaction>
+               <helpaction image="homeIcon">javax.help.HomeAction</helpaction>
+               <helpaction>javax.help.SeparatorAction</helpaction>
+               <!--<helpaction image="reloadIcon">javax.help.ReloadAction</helpaction>-->
+               <!--<helpaction image="addBookmarkIcon">javax.help.FavoritesAction</helpaction>-->
+               <helpaction image="printIcon">javax.help.PrintAction</helpaction>
+               <helpaction image="printSetupIcon">javax.help.PrintSetupAction</helpaction>
+       </toolbar>
+  </presentation>
+</helpset>
index 066f919..35d5cbd 100644 (file)
-action.refresh_services = Refrescar servicios\r
-action.reset_services = Reiniciar servicios\r
-action.merge_results = Unificar resultados\r
-action.load_scheme = Cargar esquema\r
-action.save_scheme = Guardar esquema\r
-action.save_image = Guardar imagen\r
-action.paste = Pegar\r
-action.show_html_source = Mostrar código HTML\r
-action.print = Imprimir\r
-action.web_service = Servicio web\r
-action.cancel_job = Cancelar trabajo\r
-action.start_job = Arrancar trabajo\r
-action.revert = Deshacer\r
-action.move_down = Mover hacia abajo\r
-action.move_up = Mover hacia arriba\r
-action.remove_return_datatype = Borrar tipo de datos de retorno\r
-action.add_return_datatype = Añadir tipo de datos de retorno\r
-action.remove_input_parameter = Borrar el parámetro de entrada seleccionado\r
-action.add_input_parameter = Añadir parámetro de entrada seleccionado\r
-action.edit = Editar\r
-action.new = Nuevo\r
-action.open_file = Abrir fichero\r
-action.show_unconserved = Mostrar regiones no conservadas\r
-action.open_new_aligmnent = Abrir nuevo alineamiento\r
-action.raise_associated_windows = Destacar ventanas asociadas\r
-action.minimize_associated_windows = Minimizar ventanas asociadas\r
-action.close_all = Cerrar todo\r
-action.load_project = Cargar proyecto\r
-action.save_project = Guardar proyecto\r
-action.quit = Salir\r
-action.expand_views = Expandir vistas\r
-action.gather_views = Capturar vistas\r
-action.page_setup = Configuración de la página\r
-action.reload = Recargar\r
-action.load = Cargar\r
-action.open = Abrir\r
-action.cancel = Cancelar\r
-action.create = Crear\r
-action.update = Actualizar\r
-action.delete = Borrar\r
-action.snapshot = Imagen\r
-action.clear = Limpiar\r
-action.accept = Aceptar\r
-action.select_ddbb = --- Seleccionar base de datos ---\r
-action.undo = Deshacer\r
-action.redo = Rehacer\r
-action.reset = Reiniciar\r
-action.remove_left = Eliminar parte izquierda\r
-action.remove_right = Eliminar parte derecha\r
-action.remove_empty_columns = Eliminar las columnas vacías\r
-action.remove_all_gaps = Eliminar todos los huecos\r
-action.left_justify_alignment = Ajustar el alineamiento a la izquierda\r
-action.right_justify_alignment = Ajustar el alineamiento a la derecha\r
-action.boxes = Casillas\r
-action.text = Texto\r
-action.by_pairwise_id = Identificar por parejas\r
-action.by_id = Por identificador\r
-action.by_length = Por longitud\r
-action.by_group = Por grupo\r
-action.remove = Eliminar\r
-action.remove_redundancy = Eliminar redundancia...\r
-action.pairwise_alignment = Alineamiento de pares...\r
-action.by_rna_helixes = Por hélices de RNA\r
-action.user_defined = Definido por el usuario...\r
-action.by_conservation = Por conservación\r
-action.wrap = Envolver\r
-action.show_gaps = Mostrar huecos\r
-action.show_hidden_markers = Mostrar marcadores ocultos\r
-action.find = Buscar\r
-action.undefine_groups = Grupos sin definir\r
-action.create_groups = Crear grupos\r
-action.make_groups_selection = Hacer grupos para seleccionar\r
-action.copy = Copiar\r
-action.cut = Cortar\r
-action.font = Fuente...\r
-action.scale_above = Escala superior\r
-action.scale_left = Escala izquierda\r
-action.scale_right = Escala derecha\r
-action.by_tree_order = Por orden del árbol\r
-action.sort = Ordenar\r
-action.calculate_tree = Calcular árbol\r
-action.help = Ayuda\r
-action.by_annotation = Por anotación...\r
-action.invert_sequence_selection = Invertir selección de secuencias\r
-action.invert_column_selection = Invertir selección de columnas\r
-action.show = Mostrar\r
-action.hide = Ocultar\r
-action.ok = OK\r
-action.set_defaults = Defecto\r
-action.create_group = Crear grupo\r
-action.remove_group = Eliminar grupo\r
-action.edit_group = Editar grupo\r
-action.border_colour = Color del borde\r
-action.edit_new_group = Editar nuevo grupo\r
-action.hide_sequences = Ocultar secuencias\r
-action.sequences = Secuencias\r
-action.ids = IDS\r
-action.ids_sequences = IDS y secuencias\r
-action.reveal_all = Revelar todo\r
-action.reveal_sequences = Revelar secuencias\r
-action.find_all = Buscar todo\r
-action.find_next = Buscar siguiente\r
-action.file = Archivo\r
-action.view = Ver \r
-action.change_params = Cambiar parámetros\r
-action.apply = Aplicar\r
-action.apply_threshold_all_groups = Aplicar umbral a todos los grupos\r
-action.apply_all_groups = Aplicar a todos los grupos\r
-action.by_chain = Por cadena\r
-action.by_sequence = Por secuencia\r
-action.paste_annotations = Pegar anotaciones\r
-action.format = Formato\r
-action.select = Seleccionar\r
-action.new_view = Nueva vista\r
-action.close = Cerrar\r
-action.add = Añadir\r
-action.save_as_default = Guardar como por defecto\r
-action.save_as = Guardar como\r
-action.save = Guardar\r
-action.cancel_fetch = Cancelar búsqueda\r
-action.save_omit_hidden_columns = Guardar / Omitir las columnas ocultas\r
-action.change_font = Cambiar Fuente\r
-action.change_font_tree_panel = Cambiar fuente (panel del árbol)\r
-action.colour = Color\r
-action.calculate = Calcular\r
-action.select_all = Seleccionar Todo\r
-action.deselect_all = Deseleccionar Todo\r
-action.invert_selection = Invertir selección\r
-action.using_jmol = Usar Jmol\r
-action.link = Enlazar\r
-action.group_link = Enlazar grupo\r
-action.show_chain = Mostrar cadena\r
-action.show_group = Mostrar grupo\r
-action.fetch_db_references = Recuperar referencias a base de datos\r
-action.view_flanking_regions = Mostrar flancos\r
-label.view_flanking_regions = Mostrar los datos de la secuencia a ambos lados de las subsecuencias implicadas en este alineamiento\r
-label.str = Str: \r
-label.seq = Seq: \r
-label.structures_manager = Administrar estructuras\r
-label.nickname = Sobrenombre:\r
-label.url = URL: \r
-label.input_file_url = Introducir URL en el fichero de entrada\r
-label.select_feature = Seleccionar función:\r
-label.name = Nombre:\r
-label.name_param = Nombre: {0}\r
-label.group = Grupo:\r
-label.group_name = Nombre del grupo\r
-label.group_description = Descripción del grupo\r
-label.edit_group_name_description = Editar nombre/descripción del grupo\r
-label.colour = Color:\r
-label.description = Descripción:\r
-label.start = Comenzar:\r
-label.end = Terminar:\r
-label.current_parameter_set_name = Nombre actual del conjunto de parámetros:\r
-label.service_action = Acción de servicio:\r
-label.post_url = POST URL: \r
-label.url_suffix = URL Sufijo\r
-label.sequence_source = Fuente de la secuencia\r
-label.per_seq = por secuencia\r
-label.result_vertically_separable = Los resultados son separables verticalmente\r
-label.amend = Modificar\r
-label.undo_command = Deshacer {0}\r
-label.redo_command = Rehacer {0}\r
-label.principal_component_analysis = Análisis del Componente Principal\r
-label.average_distance_identity = Distancia Media Usando % de Identidad\r
-label.neighbour_joining_identity = Unir vecinos utilizando % de Identidad\r
-label.treecalc_title = {0} utilizando {1}\r
-label.tree_calc_av = Distancia media\r
-label.tree_calc_nj = Unir vecinos\r
-label.select_score_model = Selecciones modelo de puntuación\r
-label.score_model_pid = % Identidad\r
-label.score_model_blosum62 = BLOSUM62\r
-label.score_model_pam250 = PAM 250\r
-label.score_model_conservation = Conservación de las propiedades físico-químicas\r
-label.score_model_enhconservation = Conservación de las propiedades físico-químicas\r
-label.status_bar = Barra de estado\r
-label.out_to_textbox = Generar cuadro de texto\r
-label.clustalx = Clustalx\r
-label.clustal = Clustal\r
-label.zappo = Zappo\r
-label.taylor = Taylor\r
-label.blc = BLC\r
-label.fasta = Fasta\r
-label.msf = MSF\r
-label.pfam = PFAM\r
-label.pileup = Pileup\r
-label.pir = PIR\r
-label.hydrophobicity = Hidrofobicidad\r
-label.helix_propensity = Tendencia de la hélice\r
-label.strand_propensity = Tendencia de la hebra\r
-label.turn_propensity = Tendencia de giro\r
-label.buried_index = Índice de encubrimiento\r
-label.purine_pyrimidine = Purina/Pirimidina\r
-label.percentage_identity = Porcentaje de identidad\r
-label.blosum62 = BLOSUM62\r
-label.blosum62_score = Puntuación del BLOSUM62 \r
-label.tcoffee_scores = Puntuación del T-Coffee\r
-label.average_distance_bloslum62 = Distancia Media Usando BLOSUM62\r
-label.neighbour_blosum62 = Neighbour Joining usando BLOSUM62\r
-label.show_annotations = Mostrar anotaciones\r
-label.colour_text = Color del texto\r
-label.show_non_conversed = Mostrar no conservadas\r
-label.overview_window = Ventana resumen\r
-label.none = Ninguno\r
-label.above_identity_threshold = Por encima del umbral de identidad\r
-label.show_sequence_features = Mostrar las características de las secuencias\r
-label.nucleotide = Nucleótido\r
-label.to_new_alignment = A nuevo alineamiento\r
-label.to_this_alignment = Añadir a este alineamiento\r
-label.apply_colour_to_all_groups = Aplicar color a todos los grupos\r
-label.modify_identity_thereshold = Modificar el umbral de identidad...\r
-label.modify_conservation_thereshold = Modificar el umbral de conservación...\r
-label.input_from_textbox = Introducir desde el cuadro de texto\r
-label.centre_column_labels = Centrar las etiquetas de las columnas\r
-label.automatic_scrolling = Desplazamiento automático\r
-label.documentation = Documentación\r
-label.about = Acerca de...\r
-label.show_sequence_limits = Mostrar los límites de la secuencia\r
-label.feature_settings = Ajustar funciones...\r
-label.sequence_features = Funciones de la secuencia\r
-label.all_columns = Todas las columnas\r
-label.all_sequences = Todas las secuencias\r
-label.selected_columns = Columnas seleccionadas\r
-label.selected_sequences = Secuencias seleccionadas\r
-label.all_but_selected_region = Todo menos la región seleccionada (Shift+Ctrl+H)\r
-label.selected_region = Región seleccionada\r
-label.all_sequences_columns = Todas las secuencias y columnas\r
-label.group_consensus = Consenso de grupo\r
-label.group_conservation = Conservación de grupo\r
-label.show_consensus_histogram = Mostrar el histograma de consenso\r
-label.show_consensus_logo = Mostrar el logo de consenso\r
-label.norm_consensus_logo = Normalizar el logo de consenso\r
-label.apply_all_groups = Aplicar a todos los grupos\r
-label.autocalculated_annotation = Anotación autocalculada\r
-label.min_colour = Color mínimo\r
-label.max_colour = Color máximo\r
-label.use_original_colours = Usar colores originales\r
-label.threshold_minmax = El umbral es mín/máx\r
-label.represent_group_with = Representar al grupo con\r
-label.selection = Seleccionar\r
-label.group_colour = Color del grupo\r
-label.sequence = Secuencia\r
-label.view_pdb_structure = Ver estructura PDB\r
-label.min = Mín:\r
-label.max = Máx:\r
-label.colour_by_label = Color por etiquetas\r
-label.new_feature = Nueva función\r
-label.match_case = Hacer corresponder mayúsculas y minúsculas\r
-label.view_alignment_editor = Ver en el editor de alineamientos\r
-label.labels = Etiquetas\r
-label.output_values = Valores de salida...\r
-label.output_points = Puntos de salida...\r
-label.output_transformed_points = Puntos de salida transformados\r
-label.input_data = Datos de entrada...\r
-label.nucleotide_matrix = Matriz nucleotídica\r
-label.protein_matrix = Matriz proteica\r
-label.show_bootstrap_values = Mostrar valores de Bootstrap\r
-label.show_distances = Mostrar distancias\r
-label.mark_unassociated_leaves = Marcar hojas no asociadas\r
-label.fit_to_window = Ajustar a la ventana\r
-label.newick_format = Formato Newick\r
-label.select_newick_like_tree_file = Seleccione un fichero de árbol tipo Newick\r
-label.colours = Colores\r
-label.view_mapping = Ver mapeado\r
-label.wireframe = Estructura metálica\r
-label.depthcue = Clave de profundidad\r
-label.z_buffering = Tamponamiento Z\r
-label.charge_cysteine = Carga & Cisteína\r
-label.all_chains_visible = Todas las cadenas visibles\r
-label.successfully_added_features_alignment = Funciones añadidas exitosamente al alineamiento\r
-label.keyboard_editing_mode = El modo de editar teclado es {0}\r
-label.paste_features_annotations_Tcoffee_here = Pegar tus funciones / anotaciones / puntuación del fichero T-coffee aquí.\r
-label.removed_columns = {0} columnas eliminadas.\r
-label.removed_empty_columns = {0} columnas vacías eliminadas.\r
-label.paste_newick_tree_file = Pegar su fichero árbol Newick aquí. \r
-label.order_by_params = Ordenar por {0}\r
-label.html_content = <html>{0}</html>\r
-label.paste_pdb_file= Pegar tu fichero PDB aquí.\r
-label.paste_pdb_file_for_sequence = Pegar fichero PDB para la secuencia {0}\r
-label.could_not_parse_newick_file  = No se pudo analizar el fichero Newick\\\!\\n {0}\r
-label.successfully_pasted_tcoffee_scores_to_alignment= Pegada exitosamente la puntuación T-Coffee al alineamiento.\r
-label.failed_add_tcoffee_scores = Fallo al añadir las puntuaciones T-Coffee: \r
-label.successfully_pasted_annotation_to_alignment = Anotación pegada exitosamente al alineamiento.\r
-label.couldnt_parse_pasted_text_as_valid_annotation_feature_GFF_tcoffee_file = No es posible parsear el texto pegado como una anotación características, GFF, o fichero T-Coffee válidos\r
-label.successfully_pasted_alignment_file = Fichero de alineamiento pegado exitosamente\r
-label.paste_your_alignment_file = Pegar su fichero de alineamiento aquí\r
-label.paste_your = Pegar su\r
-label.finished_searching = Búsqueda finalizada\r
-label.search_results= Buscar Resultados {0} : {1}\r
-label.found_match_for = Buscar coincidencia para {0}\r
-label.font = Fuente:\r
-label.size = Talla:\r
-label.style = Estilo:\r
-label.enter_redundancy_threshold = Introducir el umbral de redundancia\r
-label.calculating = Calculando....\r
-label.modify_conservation_visibility = Modificar la visibilidad de conservación\r
-label.colour_residues_above_occurence = Residuos de color por encima del % de aparición \r
-label.set_this_label_text = fijar como etiqueta \r
-label.sequences_from = Secuencias de {0}\r
-label.successfully_loaded_file  = Fichero cargado exitosamente {0}\r
-label.successfully_saved_to_file_in_format = Guardado exitosamente en el fichero: {0} en formato {1}.\r
-label.copied_sequences_to_clipboard = Copiadas {0} secuencias en el portapapeles.\r
-label.check_file_matches_sequence_ids_alignment = Comprobar que el fichero coincide con el ID de la secuencia en el alineamiento.\r
-label.problem_reading_tcoffee_score_file = Problema de lectura del fichero de puntuaciones T-COFFEE\r
-label.source_to_target = {0} a '{1}'\r
-label.per_sequence_only= Sólo por secuencia\r
-label.to_file = a fichero\r
-label.to_textbox = a cuadro de texto\r
-label.jalview = Jalview\r
-label.csv_spreadsheet = CSV (Hoja de cálculo)\r
-label.status =  [Estado]\r
-label.channels = Canales\r
-label.channel_title_item_count = {0} ({1})\r
-label.blog_item_published_on_date = {0} {1} \r
-label.select_das_service_from_table = Seleccionar servicio DAS de la tabla para leer una descripción completa aquí.\r
-label.session_update = Actualizar sesión\r
-label.new_vamsas_session = Nueva sesión Vamsas\r
-label.load_vamsas_session = Cargar sesión Vamsas\r
-label.save_vamsas_session = Guardar sesión Vamsas\r
-label.select_vamsas_session_opened_as_new_vamsas_session= Selecciones una sesión vamsas para abrirla como una nueva sesión.\r
-label.open_saved_vamsas_session = Abrir una sesión VAMSAS guardada\r
-label.groovy_console = Consola Groovy \r
-label.lineart = lineart\r
-label.dont_ask_me_again = No volver a preguntar\r
-label.select_eps_character_rendering_style = Seleccionar el carácter EPS como estilo de visualización \r
-label.invert_selection = Invertir selección\r
-label.optimise_order = Optimizar orden\r
-label.seq_sort_by_score = Ordenar las secuencias por puntuación\r
-label.load_colours = Cargar colores\r
-label.save_colours = Guardar colores\r
-label.fetch_das_features = Recuperar funciones DAS\r
-label.selected_database_to_fetch_from = Seleccionada {0} Base de datos {1} para buscar de {2} \r
-label.database_param = Base de datos: {0}\r
-label.example = Ejemplo\r
-label.example_param = Ejemplo: {0}\r
-label.select_file_format_before_saving = Debe seleccionar un formato de fichero antes de guardar!\r
-label.file_format_not_specified = Formato de fichero no especificado\r
-label.alignment_contains_hidden_columns = El alineamiento contiene columnas ocultas.\\nQuieres guardar s\u00F3lo el alineamiento visible?\r
-label.couldnt_save_file = No se pudo guardar el fichero: {0}\r
-label.error_saving_file = Error guardando el fichero\r
-label.remove_from_default_list = eliminar de la lista de defectuosos?\r
-label.remove_user_defined_colour = Eliminar el color definido por el usuario\r
-label.you_must_select_least_two_sequences = Debes seleccionar al menos 2 secuencias.\r
-label.invalid_selection = Selección inválida\r
-label.principal_component_analysis_must_take_least_four_input_sequences = El an\u00E1lisis de la componente principal debe tomar\\nal menos 4 secuencias de entrada.\r
-label.sequence_selection_insufficient = Selección de secuencias insuficiente\r
-label.you_need_more_two_sequences_selected_build_tree = necesitas seleccionar más de dos secuencias para construir un árbol!\r
-label.not_enough_sequences = No suficientes secuencias\r
-label.selected_region_to_tree_may_only_contain_residues_or_gaps = La regi\u00F3n seleccionada para construir un \u00E1rbol puede\\ncontener s\u00F3lo residuos o espacios.\\nPrueba usando la funci\u00F3n Pad en el men\u00FA de edici\u00F3n,\\n o uno de los m\u00FAltiples servicios web de alineamiento de secuencias.\r
-label.sequences_selection_not_aligned = Las secuencias seleccionadas no están alineadas\r
-label.sequences_must_be_aligned_before_creating_tree = Las secuencias deben estar alineadas antes de crear el \u00E1rbol.\\nPrueba usando la funci\u00F3n Pad en el men\u00FA de editar,\\n o uno de los m\u00FAltiples servicios web de alineamiento de secuencias.\r
-label.sequences_not_aligned = Secuencias no alineadas\r
-label.problem_reading_tree_file =  Problema al leer el fichero del árbol\r
-label.possible_problem_with_tree_file = Posible problema con el fichero del árbol\r
-label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation = Por favor seleccionar al menos tres bases de al menos una secuencia para poder realizar la traducción de cDNA.\r
-label.translation_failed = Translation Failed\r
-label.error_when_translating_sequences_submit_bug_report = Desafortunadamente, algo fue mal a la hora de traducir tus secuencias.\\nPor favor, revisa la consola Jalview java \\ny presenta un informe de error que incluya el seguimiento.\r
-label.implementation_error  = Error de implementación:\r
-label.automatically_associate_pdb_files_with_sequences_same_name = Quieres asociar automáticamente los {0} ficheros PDB con las secuencias del alineamiento que tengan el mismo nombre?\r
-label.automatically_associate_pdb_files_by_name = Asociar los ficheros PDB por nombre automáticamente\r
-label.ignore_unmatched_dropped_files_info = Quieres <em>ignorar</em> los {0} ficheros cuyos nombres no coincidan con ningún IDs de las secuencias ?\r
-label.ignore_unmatched_dropped_files = Ignorar los ficheros sin coincidencias?\r
-label.enter_view_name = Introducir nombre visible (¿?)\r
-label.enter_label = Introducir etiqueta\r
-label.enter_label_for_the_structure = Introducir una etiqueta para la estructura?\r
-label.pdb_entry_is_already_displayed = {0} Ya est\u00E1 mostrado.\\nQuieres volver a usar este visor?\r
-label.map_sequences_to_visible_window = Mapa de secuencias en ventana visible: {0}\r
-label.add_pdbentry_to_view = Quieres a\u00F1adir {0} a la vista llamada\\n'{1}'\\n\r
-label.align_to_existing_structure_view = Alinear a una estructura ya existente\r
-label.pdb_entries_couldnt_be_retrieved = Las siguientes entradas pdb no pueden ser extra\u00EDdas del PDB\\\:\\n{0}\\nPor favor, prueba descarg\u00E1ndolas manualmente.\r
-label.couldnt_load_file = No se pudo cargar el fichero\r
-label.couldnt_find_pdb_id_in_file = No se pudo encontrar un Id PDB en el fichero suministrado. Por favor, introduzca un Id para identificar esta estructura.\r
-label.no_pdb_id_in_file = No hay un Id PDB en el fichero\r
-label.couldnt_read_pasted_text = No se pudo leer el texto pegado {0}\r
-label.error_parsing_text = Error analizando el texto\r
-label.enter_local_das_source = Intruduzca el Nickname & URL de la fuente DAS local\r
-label.you_can_only_edit_or_remove_local_das_sources = Sólo puedes editar o eliminar fuentes DAS locales!\r
-label.public_das_source = Fuente pública DAS - no editable\r
-label.input_alignment_from_url = Alineamiento de entrada desde URL\r
-label.input_alignment = Alineamiento de entrada\r
-label.couldnt_import_as_vamsas_session = No se pudo importar '{0}' como una nueva sesión Vamsas.\r
-label.vamsas_document_import_failed =  Fallo en la importación del documento Vamsas\r
-label.couldnt_locate = No se pudo localizar {0}\r
-label.url_not_found = URL no encontrada\r
-label.no_link_selected = Enlace no seleccionado\r
-label.new_sequence_url_link = Enlace a una nueva secuencia URL\r
-label.cannot_edit_annotations_in_wrapped_view = No se pueden editar anotaciones en vista envolvente\r
-label.wrapped_view_no_edit = Vista envolvente - no editar\r
-label.error_retrieving_data = Error en la recuperación de datos\r
-label.user_colour_scheme_must_have_name = El esquema de colores del usuario debe tener un nombre\r
-label.no_name_colour_scheme = No hay nombre para el esquema de colores \r
-label.invalid_url = URL Invalido!\r
-label.error_loading_file = Error al cargar el fichero\r
-label.problems_opening_file = Encontrados problemas al abrir el fichero {0}!!\r
-label.file_open_error = Error al abrir el fichero\r
-label.no_das_sources_selected_warn = No han sido seleccionadas fuentes DAS.\\nPor favor, seleccione algunas fuentes y\\npruebe de nuevo.\r
-label.no_das_sources_selected_title = No han sido seleccionadas fuentes DAS\r
-label.colour_scheme_exists_overwrite = El esquema de colores {0} ya existe.\\nContinuar guardando el esquema de colores como {1}?"\r
-label.duplicate_scheme_name = Duplicar nombre de esquema\r
-label.jalview_new_questionnaire = Hay un nuevo cuestionario disponible. Querr\u00EDa completarlo ahora ?\\n\r
-label.jalview_user_survey = Encuesta de usuario Jalview \r
-label.alignment_properties = Propiedades del alineamiento: {0}\r
-label.alignment_props = Propiedades del alineamiento\r
-label.input_cut_paste = Cortar y pegar la entrada\r
-label.input_cut_paste_params = Cortar y pegar la entrada - {0}\r
-label.alignment_output_command = Alineamiento de salida - {0}\r
-label.annotations = Anotaciones\r
-label.features = Funciones\r
-label.overview_params = Visión general {0}\r
-label.paste_newick_file = Pegar nuevo fichero Newick\r
-label.load_tree_from_file = desde fichero - \r
-label.colour_by_annotation = Color por anotación\r
-label.selection_output_command = Seleccionar salida - {0}\r
-label.annotation_for_displayid = <p><h2>Anotación para {0} </h2></p><p>\r
-label.pdb_sequence_mapping = PDB - Mapeado de secuencia\r
-label.pca_details = detalles de la PCA\r
-label.redundancy_threshold_selection = Selección del umbral de redundancia\r
-label.user_defined_colours = Colores definidos del usuario\r
-label.jalviewLite_release = JalviewLite - versión {0}\r
-label.jaview_build_date = Fecha de creación: {0}\r
-label.jalview_authors_1 = Authors:  Jim Procter, Andrew Waterhouse, Jan Engelhardt, Lauren Lui,\r
-label.jalview_authors_2 = Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton.\r
-label.jalview_dev_managers = Desarrollo gestionado por The Barton Group, University of Dundee, Scotland, UK.\r
-label.jalview_distribution_lists = Para ayuda, ver el FAQ at www.jalview.org y/o adjuntar la lista de envío jalview-discuss@jalview.org\r
-label.jalview_please_cite = Si usa Jalview incluya la siguiente cita, por favor:\r
-label.jalview_cite_1_authors = Waterhouse, A.M., Procter, J.B., Martin, D.M.A, Clamp, M. and Barton, G. J. (2009)\r
-label.jalview_cite_1_title = Jalview Version 2 - un editor de alineamiento múltiple de secuencias y banco de trabajo de análisis\r
-label.jalview_cite_1_ref =  Bioinformaticos doi: 10.1093/bioinformatics/btp033\r
-label.right_click = clic en el botón derecho\r
-label.to_add_annotation = para añadir anotación\r
-label.alignment_has_no_annotations = El alineamiento no tiene anotaciones\r
-label.retrieving_pdb_data = Recuperación de datos PDB...\r
-label.label = Etiqueta\r
-label.no_features_added_to_this_alignment = No hay funciones asociadas a este alineamiento!!\r
-label.features_can_be_added_from_searches_1 = (Las funciones pueden ser añadidas de búsquedas o\r
-label.features_can_be_added_from_searches_2 = de ficheros de funciones Jalview / GFF)\r
-label.calculating_pca= Calculando PCA\r
-label.reveal_columns = Mostrar Columnas\r
-label.jalview_cannot_open_file = Jalview no puede abrir el fichero\r
-label.jalview_applet = Aplicación Jalview  \r
-label.loading_data = Cargando datos\r
-label.memory_stats = Memoria libre total: {0} MB; Memoria máxima: {1} MB; {2} %\r
-label.calculating_tree = Calculando árbol\r
-label.state_queueing = En cola \r
-label.state_running = Procesando\r
-label.state_complete = Completar\r
-label.state_completed = Finalizado\r
-label.state_job_cancelled = ¡Trabajo cancelado!\r
-label.state_job_error = Error del trabajo!\r
-label.server_error_try_later = ¡Error del servidor! (Intentar más tarde)\r
-label.error_loading_pdb_data = ¡Error cargando los datos PDB!\r
-label.fetching_pdb_data = Buscando los datos PDB...\r
-label.structure_type = Estructura_tipo\r
-label.settings_for_type = Ajustes para {0}\r
-label.view_full_application = Ver en la aplicación completa \r
-label.load_associated_tree = Cargar árbol asociado ...\r
-label.load_features_annotations = Cargar características/anotaciones ...\r
-label.export_features = Exportar características...\r
-label.export_annotations = Exportar anotaciones ...\r
-label.jalview_copy = Copiar (sólo Jalview)\r
-label.jalview_cut = Cortar (sólo Jalview)\r
-label.to_upper_case = Pasar a mayúsculas\r
-label.to_lower_case = Pasar a minúsculas\r
-label.toggle_case = Alternar mayúsculas y minúsculas\r
-label.edit_name_description = Editar nombre/descripción\r
-label.create_sequence_feature = Crear función de secuencia\r
-label.edit_sequence = Editar secuencia\r
-label.edit_sequences = Editar secuencias\r
-label.sequence_details = Detalles de la secuencia\r
-label.jmol_help = Ayuda de Jmol \r
-label.all = Todo\r
-label.sort_by = Ordenar por\r
-label.sort_by_score = Ordenar por puntuación\r
-label.sort_by_density = Ordenar por densidad\r
-label.sequence_sort_by_density = Ordenar las secuencias por densidad\r
-label.reveal = Revelar\r
-label.hide_columns = Ocultar columnas\r
-label.load_jalview_annotations = Cargar un fichero de anotación de Jalivew o un fichero de características\r
-label.load_tree_file = Cargar un fichero de árbol\r
-label.retrieve_parse_sequence_database_records_alignment_or_selected_sequences = Recuperar y parsear un registro de secuencia de base de datos para el alineamiento o secuencias actualmente seleccionados\r
-label.standard_databases = Bases de datos estándar\r
-label.fetch_embl_uniprot = Recuperar de EMBL/EMBLCDS o Uniprot/PDB y de cualquier fuente DAS seleccionada\r
-label.reset_min_max_colours_to_defaults = Reiniciar los colores min y max colours a los valores por defecto establecidos en las preferencias de usuario\r
-label.align_structures_using_linked_alignment_views = Alinear las estructuras utlizando las {0} vistas de alineamiento enlazadas\r
-label.connect_to_session = Conectar a la sesión {0}\r
-label.threshold_feature_display_by_score = Filtrar la característica mostrada por puntuación.\r
-label.threshold_feature_no_thereshold = Sin umbral\r
-label.threshold_feature_above_thereshold = Por encima del umbral\r
-label.threshold_feature_below_thereshold = Por debajo del umbral\r
-label.adjust_thereshold = Ajustar umbral\r
-label.toggle_absolute_relative_display_threshold = Cambiar entre mostrar el umbral absoluto y el relativo.\r
-label.display_features_same_type_different_label_using_different_colour = Mostrar las características del mismo tipo con una etiqueta diferente y empleando un color distinto (p.e. características del dominio)\r
-label.select_colour_minimum_value = Seleccionar el color para el valor mínimo\r
-label.select_colour_maximum_value = Seleccionar el color para el valor máximo\r
-label.open_new_jmol_view_with_all_structures_associated_current_selection_superimpose_using_alignment = Abrir una nueva vista Jmol con todas las estructuras asociadas con la selección acxtual y superponer las utilizando el alineamiento.\r
-label.open_url_param = Abrir URL {0}\r
-label.open_url_seqs_param = Abrir URL ({0}..) ({1} secuencias)\r
-label.load_pdb_file_associate_with_sequence = Cargar un fichero PDB y asociarlo con la secuencia '{0}'\r
-label.reveal_hidden_columns = Revelar las columnas ocultas con el botón derecho del ratón\r
-label.dark_colour = Oscurecer color\r
-label.light_colour = Aclarar color\r
-label.highlightnode = Pulse el botón izquierdo para seleccionar las hojas.<br>Haga doble clic para invertir las hojas.<br>Pulse el botón derecho para cambiar el color.\r
-label.load_colour_scheme = Cargar esquema cromático\r
-label.toggle_enabled_views = Cuando está habilitado, permite que se seleccionen varias vistas.\r
-label.edit_notes_parameter_set = Haga clic para editar las notas de este conjunto de parámetros.\r
-label.open_local_file = Abrir fichero local\r
-label.enable_automatically_sort_alignment_when_open_new_tree = Habilite esta opción para ordenar automáticamente<br>el alineamiento cuando abra<br> un nuevo árbol.\r
-label.listen_for_selections = Atención a las selecciones\r
-label.selections_mirror_selections_made_same_sequences_other_views = Cuando está habilitado, las selecciones de esta vista serán un reflejo<br>de las selecciones realizadas en las mismas secuencias de otras vistas.\r
-label.toggle_sequence_visibility = Shift+H cambia la visibilidad de la secuencia\r
-label.toggle_columns_visibility = Ctrl+H cambia la visibilidad de la columna\r
-label.toggles_visibility_hidden_selected_regions = H cambiar la visibilidad de las regiones ocultas o seleccionadas\r
-label.rename_tab_eXpand_reGroup=  Haga clic en el botón derecho para renombrar la pestaña<br>Presione X para expandir las tablas y G para reagrupar.\r
-label.right_align_sequence_id = Alinear a la derecha el ID de la secuencia\r
-label.sequence_id_tooltip = Ayuda del ID de la secuencia\r
-label.no_services = <Sin Servicios>\r
-label.select_copy_raw_html = Seleccione esta opción si desea copiar el html en bruto\r
-label.share_data_vamsas_applications = Compartir datos con otras aplicaciones vamsas\r
-label.connect_to = Conectar a\r
-label.join_existing_vamsas_session = Unirse a una sesión vamsas existente\r
-label.from_url = desde una URL\r
-label.any_trees_calculated_or_loaded_alignment_automatically_sort = Cuando está habilitado, cualquier árbol calculado o cargado en el alineamiento lo ordenará\r
-label.sort_with_new_tree = Ordenar con el nuevo árbol\r
-label.from_textbox = desde un área de texto\r
-label.window = Ventana\r
-label.preferences = Preferencias\r
-label.tools = Herramientas\r
-label.fetch_sequences = Recuperar secuencia(s)\r
-label.stop_vamsas_session = Parar sesión vamsas\r
-label.collect_garbage = Recolector de basura\r
-label.show_memory_usage = Mostrar uso de memoria\r
-label.show_java_console = Mostrar consola de Java\r
-label.show_jalview_news = Mostrar las noticias de Jalview\r
-label.take_snapshot = Tomar captura\r
-label.monospaced_fonts_faster_to_render = Las fuentes monoespaciadas son más rápidas de pintar\r
-label.anti_alias_fonts = Fuentes anti-alias (más lentas de pintar)\r
-label.monospaced_font= Monoespaciadas\r
-label.quality = Calidad\r
-label.maximize_window = Maximizar ventana\r
-label.conservation = Conservación\r
-label.consensus = Consenso\r
-label.histogram = Histograma\r
-label.logo = Logo\r
-label.non_positional_features = Características no posicionales\r
-label.database_references = Referencias a base de datos\r
-label.share_selection_across_views = Compartir la selección en todas las vistas\r
-label.scroll_highlighted_regions = Desplazarse hasta las regiones resaltadas\r
-label.gap_symbol = Símbolo del hueco\r
-label.alignment_colour = Color del alineamiento\r
-label.address = Dirección\r
-label.port = Puerto\r
-label.default_browser_unix = Navegador por defecto (Unix)\r
-label.send_usage_statistics = Enviar estadísticas de uso\r
-label.check_for_questionnaires = Comprobar los cuestionarios\r
-label.check_for_latest_version = Comprobar la última versión\r
-label.url_linkfrom_sequence_id = URL del enlace del ID de la secuencia\r
-label.use_proxy_server = Utilizar un servidor proxy\r
-label.eps_rendering_style = Estilo de visualización EPS\r
-label.append_start_end = Añadir /inicio-fin (/15-380)\r
-label.full_sequence_id = ID de la secuencia completo\r
-label.smooth_font = Fuente alargada\r
-label.autocalculate_consensus = Autocalcular consenso\r
-label.pad_gaps = Rellenar huecos\r
-label.pad_gaps_when_editing = Rellenar huecos al editar\r
-label.automatically_set_id_width = Establecer automáticamente al anchura del ID\r
-label.figure_id_column_width = Anchura de la columna del ID de la Figura\r
-label.use_modeller_output = Utilizar la salidad del Modeller\r
-label.wrap_alignment = Envolver alineamiento\r
-label.right_align_ids = Alinear IDs a la derecha\r
-label.sequence_name_italics = Nombre de la secuencia en cursiva\r
-label.open_overview = Abrir resumen\r
-label.default_colour_scheme_for_alignment = Esquema cromático por defecto para el alineamiento\r
-label.annotation_shading_default = Sombreado por defecto de la anotación\r
-label.default_minimum_colour_annotation_shading = Por mínimo por defecto para el sombreado de la anotación\r
-label.default_maximum_colour_annotation_shading = Por máximo por defecto para el sombreado de la anotación\r
-label.visual = Visual\r
-label.connections = Conexiones\r
-label.output = Salida\r
-label.editing = Edición\r
-label.das_settings = Configuración DAS\r
-label.web_services = Servicios web\r
-label.right_click_to_edit_currently_selected_parameter = Haga clic en el botón derecho para editar el parámetro seleccionado actualmente.\r
-label.let_jmol_manage_structure_colours = Permitir que Jmol gestione la estructuras cromáticas\r
-label.marks_leaves_tree_not_associated_with_sequence = Marcar las hojas del árbol que no están asociadas a una secuencia\r
-label.index_web_services_menu_by_host_site = Indizar los servicios web en el menú por el host que los aloja\r
-label.option_want_informed_web_service_URL_cannot_be_accessed_jalview_when_starts_up = Marque esta opción si desea ser informado<br>cuando no se pueda acceder a la URL de un servicio web<br>al arrancar Jalview.\r
-label.new_service_url = Nueva URL del servicio\r
-label.edit_service_url = Editar la URL del servicio\r
-label.delete_service_url = Borrar la URL del servicio\r
-label.details = Detalles\r
-label.options = Opciones\r
-label.parameters = Paramétros\r
-label.available_das_sources = Fuentes DAS disponibles\r
-label.full_details = Detalles completos\r
-label.authority = Autoridad\r
-label.type = Tipo\r
-label.proxy_server = Servidor proxy\r
-label.file_output = Fichero de salida\r
-label.select_input_type = Seleccionar el tipo de entrada\r
-label.set_options_for_type = Establecer opciones para el tipo\r
-label.data_input_parameters = Datos de los parámetros de entrada\r
-label.data_returned_by_service = Datos devueltos por el servicio\r
-label.rsbs_encoded_service = Servicio RSBS codificado\r
-label.parsing_errors = Errores de parseo\r
-label.simple_bioinformatics_rest_services = Simple Bioinformatics Rest Services\r
-label.web_service_discovery_urls = URL de descubrimiento de servicios web\r
-label.input_parameter_name = Nombre del parámetro de entrada\r
-label.short_descriptive_name_for_service = Nombre corto descriptivo del servicio\r
-label.function_service_performs = Tipo de función que realiza el servicio (p.e. alineamiento, análisis, búsqueda, etc).\r
-label.brief_description_service = Descripción breve del servicio\r
-label.url_post_data_service = URL a la que enviar los datos del servicio. Incluya cualquier parámetro especial que se necesite aquí\r
-label.optional_suffix = Sufijo opcional añadido a la URL al recuperar los resultados del servicio\r
-label.preferred_gap_character = ¿Qué caracter para el hueco prefiere el servicio?\r
-label.gap_character = Carácter para hueco\r
-label.move_return_type_up_order= Mover el tipo de returno hacia arriba en el orden\r
-label.move_return_type_down_order= Mover el tipo de returno hacia abajo en el orden\r
-label.update_user_parameter_set = Actualizar el conjunto de parámetros de usuario existente\r
-label.delete_user_parameter_set = Borrar el conjunto de parámetros de usuario existente\r
-label.create_user_parameter_set = Crear un nuevo conjunto de parámetro con la configuración actual.\r
-label.revert_changes_user_parameter_set = Deshacer todos los cambios en el conjunto de parámetros actual\r
-label.start_job_current_settings = Arrancar trabajo con la configuración actual\r
-label.cancel_job_close_dialog = Cerrar este diálogo y cancelar el trabajo\r
-label.input_output = Entrada/Salida\r
-label.cut_paste = Cortar y pegar\r
-label.adjusting_parameters_for_calculation = Ajustar los parámetros para el cálculo existente\r
-label.2d_rna_structure_line = 2D RNA {0}\r
-label.2d_rna_sequence_name = 2D RNA - {0}\r
-label.edit_name_and_description_current_group = Editar el nombre y la descripción del grupo actual.\r
-label.view_structure_for = Visualizar la estructura para {0}\r
-label.view_all_structures = Visualizar todas las {0} estructuras.\r
-label.view_all_representative_structures = Visualizar todas las {0} estructuras representativas.\r
-label.open_new_jmol_view_with_all_representative_structures_associated_current_selection_superimpose_using_alignment = Abrir una nueva vista de Jmol con todas las estructuras representativas\nasociadas con la selecci\u00F3n actual\nsuperpuesta con el alineamiento actual.\r
-label.associate_structure_with_sequence = Asociar estructura con la secuencia\r
-label.from_file = desde fichero\r
-label.enter_pdb_id = Introducir PDB Id\r
-label.discover_pdb_ids = Buscar PDB ids\r
-label.text_colour = Color del texto\r
-label.structure = Estructura\r
-label.view_structure = Visualizar estructura\r
-label.clustalx_colours = Colores de Clustalx\r
-label.above_identity_percentage = Sobre % identidad\r
-label.create_sequence_details_report_annotation_for = Anotación para {0}\r
-label.sequece_details_for = Detalles de la secuencia para {0}\r
-label.sequence_name = Nombre de la secuencia\r
-label.sequence_description = Descripción de la secuencia\r
-label.edit_sequence_name_description = Editar el nombre/descripción de la secuencia\r
-label.spaces_converted_to_backslashes = Los espacios se han convertido en _\r
-label.no_spaces_allowed_sequence_name = No se permiten espacios en el nombre de la secuencia\r
-label.select_outline_colour = Seleccionar el color del límite\r
-label.web_browser_not_found_unix = Unixers\: No es posible encontrar el navegador web por defecto.\nA\u00F1ada la ruta completa de su navegador en la pesta\u00F1a de Preferencias.\r
-label.web_browser_not_found = No se encuentra el navegador web\r
-label.select_pdb_file_for = Seleccione un fichero PDB para {0}\r
-label.html = HTML\r
-label.wrap = Envolver\r
-label.show_database_refs = Mostrar las referencias en base de datos\r
-label.show_non_positional_features = Mostrar las características no posicionales\r
-label.save_png_image = Guardar como imagen PNG\r
-label.load_tree_for_sequence_set = Cargar un árbol para este conjunto de secuencias\r
-label.export_image = Exportar imagen\r
-label.vamsas_store = Almacén VAMSAS\r
-label.translate_cDNA = Traducir cDNA\r
-label.extract_scores = Extraer puntuaciones\r
-label.get_cross_refs = Obtener referencias cruzadas\r
-label.sort_alignment_new_tree = Alinear el alineamiento con el nuevo árbol\r
-label.add_sequences = Añadir secuencias\r
-label.new_window = Nueva ventana\r
-label.refresh_available_sources = Refrescar las fuentes disponibles\r
-label.use_registry = Utilizar el registro\r
-label.add_local_source = Añadir fuente local\r
-label.set_as_default = Establecer por defecto\r
-label.show_labels = Mostrar etiquetas\r
-label.background_colour = Color de fondo\r
-label.associate_nodes_with = Asociar nodos con\r
-label.jalview_pca_calculation = Cálculo del PCA por Jalview\r
-label.link_name = Nombre del enalce\r
-label.pdb_file = Fichero PDB\r
-label.colour_with_jmol = Colorear con Jmol\r
-label.align_structures = Alinear estructuras\r
-label.jmol = Jmol\r
-label.sort_alignment_by_tree = Ordenar alineamiento por árbol\r
-label.mark_unlinked_leaves = Marcar las hojas como no enlazadas\r
-label.associate_leaves_with = Asociar hojas con\r
-label.save_colour_scheme_with_unique_name_added_to_colour_menu = Guarde el esquema cromáticos con un nombre único y se añadirá al menú de colores\r
-label.case_sensitive = Sensible a mayúsculas\r
-label.lower_case_colour = Color para las minúsculas\r
-label.index_by_host = Indizar por host\r
-label.index_by_type = Indizar por tipo\r
-label.enable_jabaws_services = Habilitar servicios JABAWS\r
-label.display_warnings = Mostrar advertencias\r
-label.move_url_up = Mover la URL hacia arriba\r
-label.move_url_down = Mover la URL hacia abajo\r
-label.add_sbrs_definition = Añadir una definición SBRS \r
-label.edit_sbrs_definition = Editar una definición SBRS \r
-label.delete_sbrs_definition = Borrar una definición SBRS \r
-label.your_sequences_have_been_verified = Sus secuencias has sido verificadas en una base de datos de secuencias conocidas. Algunos de sus ID se han alterado y\n, probablemente, el residuo de inicio/fin se haya actualizado.\nGuarde su alineamiento para mantener el ID actualizado.\n\n \r
-label.sequence_names_updated = Nombres de secuencia actualizados\r
-label.dbref_search_completed = Búsqueda de DBRef terminada\r
-label.show_all_chains = Mostrar todas las cadenas\r
-label.fetch_all_param = Recuperar todas {0}\r
-label.paste_new_window = Pegar en una nueva ventana\r
-label.settings_for_param = Configuración para {0}\r
-label.view_params = Visualizar {0}\r
-label.select_all_views = Seleccionar todas las vistas\r
-label.align_sequences_to_existing_alignment = Alinear las secuencias con el alineamiento existente\r
-label.realign_with_params = Realinear con {0}\r
-label.calcname_with_default_settings = {0} por defecto\r
-label.action_with_default_settings = {0} con la configuración por defecto\r
-label.edit_settings_and_run = Editar la configuración y ejecutar...\r
-label.view_and_change_parameters_before_alignment = Ver y cambiar los parámetros antes del alineamiento\r
-label.run_with_preset_params = Ejecutar {0} con preconfiguración\r
-label.view_and_change_parameters_before_running_calculation = Ver y cambiar los parámetros antes de lanzar el cálculo\r
-label.view_documentation = Ver documentación\r
-label.select_return_type = Seleccionar el tipo de retorno\r
-label.translation_of_params = Traducción de {0}\r
-label.features_for_params = Características de - {0}\r
-label.annotations_for_params = Anotaciones de - {0}\r
-label.generating_features_for_params = Generando características de - {0}\r
-label.generating_annotations_for_params = Generando anotaciones de - {0}\r
-label.varna_params = VARNA - {0}\r
-label.sequence_feature_settings = Configuración de las características de la secuencia\r
-label.pairwise_aligned_sequences = Secuencias alineadas a pares\r
-label.original_data_for_params = Datos originales de {0}\r
-label.points_for_params = Puntos de {0}\r
-label.transformed_points_for_params = Puntos transformados de {0}\r
-label.graduated_color_for_params = Color graduado para la característica de {0}\r
-label.select_backgroud_colour = Seleccionar color de fondo\r
-label.invalid_font = Fuente no válida\r
-label.separate_multiple_accession_ids = Separar los accession id con un punto y coma ";"\r
-label.replace_commas_semicolons = Cambiar comas por puntos y comas\r
-label.parsing_failed_syntax_errors_shown_below_param = Parseo erróneo. A continuación, se muestras los errores de sintaxis {0}\r
-label.parsing_failed_unrecoverable_exception_thrown_param = \nParseo err\u00F3neo. Se ha lanzado una excepci\u00F3n fatal\:\n {0}\r
-label.example_query_param = Consulta de ejemplo: {0}\r
-label.enter_value_increase_conservation_visibility = Introduzca un valor para incrementar la visibilidad de la conservación\r
-label.enter_percentage_identity_above_which_colour_residues = Introduza un % de identidad por encima del cual se colorearán los residuos\r
-label.wswublast_client_credits = Para mostrar las caracter\u00EDsticas de una secuencia, debe indicarse un id de Uniprot cuya secuencia se corresponda al 100 % con la introducida.\nPara mostrar estas caracter\u00EDsticas, prueba a cambar los nombre de sus secuencia con los ID que se sugieren a continuaci\u00F3n.\n\nRunning WSWUBlast at EBI.\nPlease quote Pillai S., Silventoinen V., Kallio K., Senger M., Sobhany S., Tate J., Velankar S., Golovin A., Henrick K., Rice P., Stoehr P., Lopez R.\nSOAP-based services provided by the European Bioinformatics Institute.\nNucleic Acids Res. 33(1)\:W25-W28 (2005));\r
-label.blasting_for_unidentified_sequence = Ejecutar BLAST para la secuencias sin identificar\r
-label.select_columns_containing = Seleccione las columnas que contengan\r
-label.select_columns_not_containing = Seleccione las columnas que no contengan\r
-option.trim_retrieved_seqs = Ajustar las secuencias recuperadas\r
-label.trim_retrieved_sequences = Cuando la secuencia de referencia es más larga que la secuencia con la que está trabajando, sólo se mantienen las subsecuencias relevantes.\r
-label.use_sequence_id_1 = Utilice $SEQUENCE_ID$ o $SEQUENCE_ID=/<regex>/=$\r
-label.use_sequence_id_2 = \nto para embeber el id de la secuencia en una URL\r
-label.ws_parameters_for = Parámetros para {0}\r
-label.switch_server = Cambiar servidor\r
-label.open_jabaws_web_page = Abre el página principal del servidor JABAWS en un navegador web\r
-label.choose_jabaws_server = Escoja un servidor para ejecutar este servicio\r
-label.services_at = Servicios en {0}\r
-label.rest_client_submit = {0} utilizando {1}\r
-label.fetch_retrieve_from =Recuperar de {0}\r
-label.fetch_retrieve_from_all_sources = Recuperar de todas las fuentes {0} en {1}<br>La primera es :{2} \r
-label.feature_settings_click_drag = Haga clic o arrastre los tipos de las características hacia arriba o hacia abajo para cambiar el orden de visualización.<br/>Haga doble clic para seleccionar las columnas que contienen las características del alineamiento/selección actual.<br/>Presionando Alt seleccionará las columnas exteriores a las características en lugar de las interiores<br/>Presione Shift para modificar la selección actual (en lugar de borrarla)<br/>Presione CTRL o Command/Meta para cambiar las columans externas o internas a las características<br/>\r
-label.opt_and_params_further_details = ver los detalles adicionales haciendo clic en el botón derecho\r
-label.opt_and_params_show_brief_desc_image_link = Haga clic para ver una descripción breve<br><img src="{0}"/>Haga clic en el botón derecho para obtener información adicional. \r
-label.opt_and_params_show_brief_desc = Haga clic para ver una descripción breve<br>\r
-label.adjusts_width_generated_eps_png = Ajusta la anchura del fichero EPS o PNG generado para asegurar incluso que el ID de la secuencia más larga o las etiquetas de anotación se muestran\r
-label.manually_specify_width_left_column = Especificar manualmente la anchura de la columna izquierda en las etiquetas de los ID de la secuencia y las anotaciones se mostrar en las figuras del alineamiento exportado.Esta configuraicón se ignorará si está marcada la opción 'Establecer automáticamente al anchura del ID'\r
-label.job_created_when_checked = Cuando está habilitado, se crea un trabajo para cada secuencia de la selección actual\r
-label.when_checked_job_visible_region_and_results = Cuando está habilitado, se crea un único trabajo para la región visible y los resultados de mapean en su ubicación dentro del alineamiento. En caso contrario, se creará un trabajo para cada región visible y contigua en el alineamiento o selección actual (p.e. un alineamiento múlitple).\r
-label.flat_file_representation = La representación del fichero plano de este servicio utilizando el formalismo Really Simple Bioinformatics Service\r
-label.result_of_parsing_rsbs = Resultados de parsear la representación RSBS\r
-label.user_preset = Preselección de usuario\r
-label.service_preset = Preselección del servicio\r
-label.run_with_preset = Ejecutar {0} con preselección\r
-label.view_service_doc_url = Visualizar <a href="{0}">{1}</a>\r
-label.submit_sequence = Enviar {0} {1} {2} {3} a<br/>{4}\r
-action.by_title_param = por {0}\r
-label.alignment = Alineamiento\r
-label.secondary_structure_prediction = Predicción de la estructura secundaria\r
-label.sequence_database_search = Búsqueda en base de datos de secuencias\r
-label.analysis = Análisis\r
-label.protein_disorder = Desorden en la proteína \r
-label.source_from_db_source = Fuentes de {0}\r
-label.from_msname = de '{0}'\r
-label.superpose_with = Superponer con...\r
-action.do = Hacer\r
-label.scale_label_to_column = Ajustar la etiqueta a la columna\r
-label.add_new_row = Añadir nuevo fila\r
-label.edit_label_description = Editar etiqueta/descripción\r
-label.hide_row = Ocultar esta fila\r
-label.delete_row = Borrar esta fila\r
-label.show_all_hidden_rows = Mostrar todas las filas ocultas\r
-label.export_annotation = Exportar anotación\r
-label.copy_consensus_sequence = Copiar secuencia de consenso\r
-label.helix = Hélice\r
-label.sheet = Hoja\r
-label.rna_helix = Hélice de ARN\r
-label.remove_annotation = Borrar anotación\r
-label.colour_by = Colorear por...\r
-label.muscle_multiple_protein_sequence_alignment = Alineamiento múltiple de secuencias de proteínas con Muscle\r
-label.mafft_multiple_sequence_alignment = Alineamiento múltiple de secuencias con MAFFT\r
-label.clustalw_multiple_sequence_alignment = Alineamiento múltiple de secuencias con ClustalW\r
-label.jnet_secondary_structure_prediction = Predicción de la estructura secundaria con JNet\r
-label.multiharmony = Multi-Harmony\r
-label.unable_start_web_service_analysis = No es posible iniciar el servicio web de análisis\r
-label.job_couldnt_be_started_check_input = El trabajo no puede arrancarse. Por favor, compruebe los parámetros de entrada y los mensajes de advertencia de la consola de Jalview.\r
-label.prompt_each_time = Preguntar siempre\r
-label.use_source = Fuente\r
-label.couldnt_save_project = No es posible guardar el proyecto\r
-label.error_whilst_saving_current_state_to = Error mientras se guardaba el estado a {0}\r
-label.error_whilst_loading_project_from = Error cargado el proyecto desde  {0}\r
-label.couldnt_load_project = No es posible cargar el proyecto\r
+action.refresh_services = Refrescar servicios
+action.reset_services = Reiniciar servicios
+action.merge_results = Unificar resultados
+action.load_scheme = Cargar esquema
+action.save_scheme = Guardar esquema
+action.save_image = Guardar imagen
+action.paste = Pegar
+action.show_html_source = Mostrar código HTML
+action.print = Imprimir
+action.web_service = Servicio web
+action.cancel_job = Cancelar trabajo
+action.start_job = Arrancar trabajo
+action.revert = Deshacer
+action.move_down = Mover hacia abajo
+action.move_up = Mover hacia arriba
+action.remove_return_datatype = Borrar tipo de datos de retorno
+action.add_return_datatype = Añadir tipo de datos de retorno
+action.remove_input_parameter = Borrar el parámetro de entrada seleccionado
+action.add_input_parameter = Añadir parámetro de entrada seleccionado
+action.edit = Editar
+action.new = Nuevo
+action.open_file = Abrir fichero
+action.show_unconserved = Mostrar regiones no conservadas
+action.open_new_aligmnent = Abrir nuevo alineamiento
+action.raise_associated_windows = Destacar ventanas asociadas
+action.minimize_associated_windows = Minimizar ventanas asociadas
+action.close_all = Cerrar todo
+action.load_project = Cargar proyecto
+action.save_project = Guardar proyecto
+action.quit = Salir
+action.expand_views = Expandir vistas
+action.gather_views = Capturar vistas
+action.page_setup = Configuración de la página
+action.reload = Recargar
+action.load = Cargar
+action.open = Abrir
+action.cancel = Cancelar
+action.create = Crear
+action.update = Actualizar
+action.delete = Borrar
+action.snapshot = Imagen
+action.clear = Limpiar
+action.accept = Aceptar
+action.select_ddbb = --- Seleccionar base de datos ---
+action.undo = Deshacer
+action.redo = Rehacer
+action.reset = Reiniciar
+action.remove_left = Eliminar parte izquierda
+action.remove_right = Eliminar parte derecha
+action.remove_empty_columns = Eliminar las columnas vacías
+action.remove_all_gaps = Eliminar todos los huecos
+action.left_justify_alignment = Ajustar el alineamiento a la izquierda
+action.right_justify_alignment = Ajustar el alineamiento a la derecha
+action.boxes = Casillas
+action.text = Texto
+action.by_pairwise_id = Identificar por parejas
+action.by_id = Por identificador
+action.by_length = Por longitud
+action.by_group = Por grupo
+action.remove = Eliminar
+action.remove_redundancy = Eliminar redundancia...
+action.pairwise_alignment = Alineamiento de pares...
+action.by_rna_helixes = Por hélices de RNA
+action.user_defined = Definido por el usuario...
+action.by_conservation = Por conservación
+action.wrap = Envolver
+action.show_gaps = Mostrar huecos
+action.show_hidden_markers = Mostrar marcadores ocultos
+action.find = Buscar
+action.undefine_groups = Grupos sin definir
+action.create_groups = Crear grupos
+action.make_groups_selection = Hacer grupos para seleccionar
+action.copy = Copiar
+action.cut = Cortar
+action.font = Fuente...
+action.scale_above = Escala superior
+action.scale_left = Escala izquierda
+action.scale_right = Escala derecha
+action.by_tree_order = Por orden del árbol
+action.sort = Ordenar
+action.calculate_tree = Calcular árbol
+action.help = Ayuda
+action.by_annotation = Por anotación...
+action.invert_sequence_selection = Invertir selección de secuencias
+action.invert_column_selection = Invertir selección de columnas
+action.show = Mostrar
+action.hide = Ocultar
+action.ok = OK
+action.set_defaults = Defecto
+action.create_group = Crear grupo
+action.remove_group = Eliminar grupo
+action.edit_group = Editar grupo
+action.border_colour = Color del borde
+action.edit_new_group = Editar nuevo grupo
+action.hide_sequences = Ocultar secuencias
+action.sequences = Secuencias
+action.ids = IDS
+action.ids_sequences = IDS y secuencias
+action.reveal_all = Revelar todo
+action.reveal_sequences = Revelar secuencias
+action.find_all = Buscar todo
+action.find_next = Buscar siguiente
+action.file = Archivo
+action.view = Ver 
+action.change_params = Cambiar parámetros
+action.apply = Aplicar
+action.apply_threshold_all_groups = Aplicar umbral a todos los grupos
+action.apply_all_groups = Aplicar a todos los grupos
+action.by_chain = Por cadena
+action.by_sequence = Por secuencia
+action.paste_annotations = Pegar anotaciones
+action.format = Formato
+action.select = Seleccionar
+action.new_view = Nueva vista
+action.close = Cerrar
+action.add = Añadir
+action.save_as_default = Guardar como por defecto
+action.save_as = Guardar como
+action.save = Guardar
+action.cancel_fetch = Cancelar búsqueda
+action.save_omit_hidden_columns = Guardar / Omitir las columnas ocultas
+action.change_font = Cambiar Fuente
+action.change_font_tree_panel = Cambiar fuente (panel del árbol)
+action.colour = Color
+action.calculate = Calcular
+action.select_all = Seleccionar Todo
+action.deselect_all = Deseleccionar Todo
+action.invert_selection = Invertir selección
+action.using_jmol = Usar Jmol
+action.link = Enlazar
+action.group_link = Enlazar grupo
+action.show_chain = Mostrar cadena
+action.show_group = Mostrar grupo
+action.fetch_db_references = Recuperar referencias a base de datos
+action.view_flanking_regions = Mostrar flancos
+label.view_flanking_regions = Mostrar los datos de la secuencia a ambos lados de las subsecuencias implicadas en este alineamiento
+label.str = Str: 
+label.seq = Seq: 
+label.structures_manager = Administrar estructuras
+label.nickname = Sobrenombre:
+label.url = URL: 
+label.input_file_url = Introducir URL en el fichero de entrada
+label.select_feature = Seleccionar función:
+label.name = Nombre:
+label.name_param = Nombre: {0}
+label.group = Grupo:
+label.group_name = Nombre del grupo
+label.group_description = Descripción del grupo
+label.edit_group_name_description = Editar nombre/descripción del grupo
+label.colour = Color:
+label.description = Descripción:
+label.start = Comenzar:
+label.end = Terminar:
+label.current_parameter_set_name = Nombre actual del conjunto de parámetros:
+label.service_action = Acción de servicio:
+label.post_url = POST URL: 
+label.url_suffix = URL Sufijo
+label.sequence_source = Fuente de la secuencia
+label.per_seq = por secuencia
+label.result_vertically_separable = Los resultados son separables verticalmente
+label.amend = Modificar
+label.undo_command = Deshacer {0}
+label.redo_command = Rehacer {0}
+label.principal_component_analysis = Análisis del Componente Principal
+label.average_distance_identity = Distancia Media Usando % de Identidad
+label.neighbour_joining_identity = Unir vecinos utilizando % de Identidad
+label.treecalc_title = {0} utilizando {1}
+label.tree_calc_av = Distancia media
+label.tree_calc_nj = Unir vecinos
+label.select_score_model = Selecciones modelo de puntuación
+label.score_model_pid = % Identidad
+label.score_model_blosum62 = BLOSUM62
+label.score_model_pam250 = PAM 250
+label.score_model_conservation = Conservación de las propiedades físico-químicas
+label.score_model_enhconservation = Conservación de las propiedades físico-químicas
+label.status_bar = Barra de estado
+label.out_to_textbox = Generar cuadro de texto
+label.clustalx = Clustalx
+label.clustal = Clustal
+label.zappo = Zappo
+label.taylor = Taylor
+label.blc = BLC
+label.fasta = Fasta
+label.msf = MSF
+label.pfam = PFAM
+label.pileup = Pileup
+label.pir = PIR
+label.hydrophobicity = Hidrofobicidad
+label.helix_propensity = Tendencia de la hélice
+label.strand_propensity = Tendencia de la hebra
+label.turn_propensity = Tendencia de giro
+label.buried_index = Índice de encubrimiento
+label.purine_pyrimidine = Purina/Pirimidina
+label.percentage_identity = Porcentaje de identidad
+label.blosum62 = BLOSUM62
+label.blosum62_score = Puntuación del BLOSUM62 
+label.tcoffee_scores = Puntuación del T-Coffee
+label.average_distance_bloslum62 = Distancia Media Usando BLOSUM62
+label.neighbour_blosum62 = Neighbour Joining usando BLOSUM62
+label.show_annotations = Mostrar anotaciones
+label.colour_text = Color del texto
+label.show_non_conversed = Mostrar no conservadas
+label.overview_window = Ventana resumen
+label.none = Ninguno
+label.above_identity_threshold = Por encima del umbral de identidad
+label.show_sequence_features = Mostrar las características de las secuencias
+label.nucleotide = Nucleótido
+label.to_new_alignment = A nuevo alineamiento
+label.to_this_alignment = Añadir a este alineamiento
+label.apply_colour_to_all_groups = Aplicar color a todos los grupos
+label.modify_identity_thereshold = Modificar el umbral de identidad...
+label.modify_conservation_thereshold = Modificar el umbral de conservación...
+label.input_from_textbox = Introducir desde el cuadro de texto
+label.centre_column_labels = Centrar las etiquetas de las columnas
+label.automatic_scrolling = Desplazamiento automático
+label.documentation = Documentación
+label.about = Acerca de...
+label.show_sequence_limits = Mostrar los límites de la secuencia
+label.feature_settings = Ajustar funciones...
+label.sequence_features = Funciones de la secuencia
+label.all_columns = Todas las columnas
+label.all_sequences = Todas las secuencias
+label.selected_columns = Columnas seleccionadas
+label.selected_sequences = Secuencias seleccionadas
+label.all_but_selected_region = Todo menos la región seleccionada (Shift+Ctrl+H)
+label.selected_region = Región seleccionada
+label.all_sequences_columns = Todas las secuencias y columnas
+label.group_consensus = Consenso de grupo
+label.group_conservation = Conservación de grupo
+label.show_consensus_histogram = Mostrar el histograma de consenso
+label.show_consensus_logo = Mostrar el logo de consenso
+label.norm_consensus_logo = Normalizar el logo de consenso
+label.apply_all_groups = Aplicar a todos los grupos
+label.autocalculated_annotation = Anotación autocalculada
+label.min_colour = Color mínimo
+label.max_colour = Color máximo
+label.use_original_colours = Usar colores originales
+label.threshold_minmax = El umbral es mín/máx
+label.represent_group_with = Representar al grupo con
+label.selection = Seleccionar
+label.group_colour = Color del grupo
+label.sequence = Secuencia
+label.view_pdb_structure = Ver estructura PDB
+label.min = Mín:
+label.max = Máx:
+label.colour_by_label = Color por etiquetas
+label.new_feature = Nueva función
+label.match_case = Hacer corresponder mayúsculas y minúsculas
+label.view_alignment_editor = Ver en el editor de alineamientos
+label.labels = Etiquetas
+label.output_values = Valores de salida...
+label.output_points = Puntos de salida...
+label.output_transformed_points = Puntos de salida transformados
+label.input_data = Datos de entrada...
+label.nucleotide_matrix = Matriz nucleotídica
+label.protein_matrix = Matriz proteica
+label.show_bootstrap_values = Mostrar valores de Bootstrap
+label.show_distances = Mostrar distancias
+label.mark_unassociated_leaves = Marcar hojas no asociadas
+label.fit_to_window = Ajustar a la ventana
+label.newick_format = Formato Newick
+label.select_newick_like_tree_file = Seleccione un fichero de árbol tipo Newick
+label.colours = Colores
+label.view_mapping = Ver mapeado
+label.wireframe = Estructura metálica
+label.depthcue = Clave de profundidad
+label.z_buffering = Tamponamiento Z
+label.charge_cysteine = Carga & Cisteína
+label.all_chains_visible = Todas las cadenas visibles
+label.successfully_added_features_alignment = Funciones añadidas exitosamente al alineamiento
+label.keyboard_editing_mode = El modo de editar teclado es {0}
+label.paste_features_annotations_Tcoffee_here = Pegar tus funciones / anotaciones / puntuación del fichero T-coffee aquí.
+label.removed_columns = {0} columnas eliminadas.
+label.removed_empty_columns = {0} columnas vacías eliminadas.
+label.paste_newick_tree_file = Pegar su fichero árbol Newick aquí. 
+label.order_by_params = Ordenar por {0}
+label.html_content = <html>{0}</html>
+label.paste_pdb_file= Pegar tu fichero PDB aquí.
+label.paste_pdb_file_for_sequence = Pegar fichero PDB para la secuencia {0}
+label.could_not_parse_newick_file  = No se pudo analizar el fichero Newick\\\!\\n {0}
+label.successfully_pasted_tcoffee_scores_to_alignment= Pegada exitosamente la puntuación T-Coffee al alineamiento.
+label.failed_add_tcoffee_scores = Fallo al añadir las puntuaciones T-Coffee: 
+label.successfully_pasted_annotation_to_alignment = Anotación pegada exitosamente al alineamiento.
+label.couldnt_parse_pasted_text_as_valid_annotation_feature_GFF_tcoffee_file = No es posible parsear el texto pegado como una anotación características, GFF, o fichero T-Coffee válidos
+label.successfully_pasted_alignment_file = Fichero de alineamiento pegado exitosamente
+label.paste_your_alignment_file = Pegar su fichero de alineamiento aquí
+label.paste_your = Pegar su
+label.finished_searching = Búsqueda finalizada
+label.search_results= Buscar Resultados {0} : {1}
+label.found_match_for = Buscar coincidencia para {0}
+label.font = Fuente:
+label.size = Talla:
+label.style = Estilo:
+label.enter_redundancy_threshold = Introducir el umbral de redundancia
+label.calculating = Calculando....
+label.modify_conservation_visibility = Modificar la visibilidad de conservación
+label.colour_residues_above_occurence = Residuos de color por encima del % de aparición 
+label.set_this_label_text = fijar como etiqueta 
+label.sequences_from = Secuencias de {0}
+label.successfully_loaded_file  = Fichero cargado exitosamente {0}
+label.successfully_saved_to_file_in_format = Guardado exitosamente en el fichero: {0} en formato {1}.
+label.copied_sequences_to_clipboard = Copiadas {0} secuencias en el portapapeles.
+label.check_file_matches_sequence_ids_alignment = Comprobar que el fichero coincide con el ID de la secuencia en el alineamiento.
+label.problem_reading_tcoffee_score_file = Problema de lectura del fichero de puntuaciones T-COFFEE
+label.source_to_target = {0} a '{1}'
+label.per_sequence_only= Sólo por secuencia
+label.to_file = a fichero
+label.to_textbox = a cuadro de texto
+label.jalview = Jalview
+label.csv_spreadsheet = CSV (Hoja de cálculo)
+label.status =  [Estado]
+label.channels = Canales
+label.channel_title_item_count = {0} ({1})
+label.blog_item_published_on_date = {0} {1} 
+label.select_das_service_from_table = Seleccionar servicio DAS de la tabla para leer una descripción completa aquí.
+label.session_update = Actualizar sesión
+label.new_vamsas_session = Nueva sesión Vamsas
+label.load_vamsas_session = Cargar sesión Vamsas
+label.save_vamsas_session = Guardar sesión Vamsas
+label.select_vamsas_session_opened_as_new_vamsas_session= Selecciones una sesión vamsas para abrirla como una nueva sesión.
+label.open_saved_vamsas_session = Abrir una sesión VAMSAS guardada
+label.groovy_console = Consola Groovy 
+label.lineart = lineart
+label.dont_ask_me_again = No volver a preguntar
+label.select_eps_character_rendering_style = Seleccionar el carácter EPS como estilo de visualización 
+label.invert_selection = Invertir selección
+label.optimise_order = Optimizar orden
+label.seq_sort_by_score = Ordenar las secuencias por puntuación
+label.load_colours = Cargar colores
+label.save_colours = Guardar colores
+label.fetch_das_features = Recuperar funciones DAS
+label.selected_database_to_fetch_from = Seleccionada {0} Base de datos {1} para buscar de {2} 
+label.database_param = Base de datos: {0}
+label.example = Ejemplo
+label.example_param = Ejemplo: {0}
+label.select_file_format_before_saving = Debe seleccionar un formato de fichero antes de guardar!
+label.file_format_not_specified = Formato de fichero no especificado
+label.alignment_contains_hidden_columns = El alineamiento contiene columnas ocultas.\\nQuieres guardar s\u00F3lo el alineamiento visible?
+label.couldnt_save_file = No se pudo guardar el fichero: {0}
+label.error_saving_file = Error guardando el fichero
+label.remove_from_default_list = eliminar de la lista de defectuosos?
+label.remove_user_defined_colour = Eliminar el color definido por el usuario
+label.you_must_select_least_two_sequences = Debes seleccionar al menos 2 secuencias.
+label.invalid_selection = Selección inválida
+label.principal_component_analysis_must_take_least_four_input_sequences = El an\u00E1lisis de la componente principal debe tomar\\nal menos 4 secuencias de entrada.
+label.sequence_selection_insufficient = Selección de secuencias insuficiente
+label.you_need_more_two_sequences_selected_build_tree = necesitas seleccionar más de dos secuencias para construir un árbol!
+label.not_enough_sequences = No suficientes secuencias
+label.selected_region_to_tree_may_only_contain_residues_or_gaps = La regi\u00F3n seleccionada para construir un \u00E1rbol puede\\ncontener s\u00F3lo residuos o espacios.\\nPrueba usando la funci\u00F3n Pad en el men\u00FA de edici\u00F3n,\\n o uno de los m\u00FAltiples servicios web de alineamiento de secuencias.
+label.sequences_selection_not_aligned = Las secuencias seleccionadas no están alineadas
+label.sequences_must_be_aligned_before_creating_tree = Las secuencias deben estar alineadas antes de crear el \u00E1rbol.\\nPrueba usando la funci\u00F3n Pad en el men\u00FA de editar,\\n o uno de los m\u00FAltiples servicios web de alineamiento de secuencias.
+label.sequences_not_aligned = Secuencias no alineadas
+label.problem_reading_tree_file =  Problema al leer el fichero del árbol
+label.possible_problem_with_tree_file = Posible problema con el fichero del árbol
+label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation = Por favor seleccionar al menos tres bases de al menos una secuencia para poder realizar la traducción de cDNA.
+label.translation_failed = Translation Failed
+label.error_when_translating_sequences_submit_bug_report = Desafortunadamente, algo fue mal a la hora de traducir tus secuencias.\\nPor favor, revisa la consola Jalview java \\ny presenta un informe de error que incluya el seguimiento.
+label.implementation_error  = Error de implementación:
+label.automatically_associate_pdb_files_with_sequences_same_name = Quieres asociar automáticamente los {0} ficheros PDB con las secuencias del alineamiento que tengan el mismo nombre?
+label.automatically_associate_pdb_files_by_name = Asociar los ficheros PDB por nombre automáticamente
+label.ignore_unmatched_dropped_files_info = Quieres <em>ignorar</em> los {0} ficheros cuyos nombres no coincidan con ningún IDs de las secuencias ?
+label.ignore_unmatched_dropped_files = Ignorar los ficheros sin coincidencias?
+label.enter_view_name = Introducir nombre visible (¿?)
+label.enter_label = Introducir etiqueta
+label.enter_label_for_the_structure = Introducir una etiqueta para la estructura?
+label.pdb_entry_is_already_displayed = {0} Ya est\u00E1 mostrado.\\nQuieres volver a usar este visor?
+label.map_sequences_to_visible_window = Mapa de secuencias en ventana visible: {0}
+label.add_pdbentry_to_view = Quieres a\u00F1adir {0} a la vista llamada\\n'{1}'\\n
+label.align_to_existing_structure_view = Alinear a una estructura ya existente
+label.pdb_entries_couldnt_be_retrieved = Las siguientes entradas pdb no pueden ser extra\u00EDdas del PDB\\\:\\n{0}\\nPor favor, prueba descarg\u00E1ndolas manualmente.
+label.couldnt_load_file = No se pudo cargar el fichero
+label.couldnt_find_pdb_id_in_file = No se pudo encontrar un Id PDB en el fichero suministrado. Por favor, introduzca un Id para identificar esta estructura.
+label.no_pdb_id_in_file = No hay un Id PDB en el fichero
+label.couldnt_read_pasted_text = No se pudo leer el texto pegado {0}
+label.error_parsing_text = Error analizando el texto
+label.enter_local_das_source = Intruduzca el Nickname & URL de la fuente DAS local
+label.you_can_only_edit_or_remove_local_das_sources = Sólo puedes editar o eliminar fuentes DAS locales!
+label.public_das_source = Fuente pública DAS - no editable
+label.input_alignment_from_url = Alineamiento de entrada desde URL
+label.input_alignment = Alineamiento de entrada
+label.couldnt_import_as_vamsas_session = No se pudo importar '{0}' como una nueva sesión Vamsas.
+label.vamsas_document_import_failed =  Fallo en la importación del documento Vamsas
+label.couldnt_locate = No se pudo localizar {0}
+label.url_not_found = URL no encontrada
+label.no_link_selected = Enlace no seleccionado
+label.new_sequence_url_link = Enlace a una nueva secuencia URL
+label.cannot_edit_annotations_in_wrapped_view = No se pueden editar anotaciones en vista envolvente
+label.wrapped_view_no_edit = Vista envolvente - no editar
+label.error_retrieving_data = Error en la recuperación de datos
+label.user_colour_scheme_must_have_name = El esquema de colores del usuario debe tener un nombre
+label.no_name_colour_scheme = No hay nombre para el esquema de colores 
+label.invalid_url = URL Invalido!
+label.error_loading_file = Error al cargar el fichero
+label.problems_opening_file = Encontrados problemas al abrir el fichero {0}!!
+label.file_open_error = Error al abrir el fichero
+label.no_das_sources_selected_warn = No han sido seleccionadas fuentes DAS.\\nPor favor, seleccione algunas fuentes y\\npruebe de nuevo.
+label.no_das_sources_selected_title = No han sido seleccionadas fuentes DAS
+label.colour_scheme_exists_overwrite = El esquema de colores {0} ya existe.\\nContinuar guardando el esquema de colores como {1}?"
+label.duplicate_scheme_name = Duplicar nombre de esquema
+label.jalview_new_questionnaire = Hay un nuevo cuestionario disponible. Querr\u00EDa completarlo ahora ?\\n
+label.jalview_user_survey = Encuesta de usuario Jalview 
+label.alignment_properties = Propiedades del alineamiento: {0}
+label.alignment_props = Propiedades del alineamiento
+label.input_cut_paste = Cortar y pegar la entrada
+label.input_cut_paste_params = Cortar y pegar la entrada - {0}
+label.alignment_output_command = Alineamiento de salida - {0}
+label.annotations = Anotaciones
+label.features = Funciones
+label.overview_params = Visión general {0}
+label.paste_newick_file = Pegar nuevo fichero Newick
+label.load_tree_from_file = desde fichero - 
+label.colour_by_annotation = Color por anotación
+label.selection_output_command = Seleccionar salida - {0}
+label.annotation_for_displayid = <p><h2>Anotación para {0} </h2></p><p>
+label.pdb_sequence_mapping = PDB - Mapeado de secuencia
+label.pca_details = detalles de la PCA
+label.redundancy_threshold_selection = Selección del umbral de redundancia
+label.user_defined_colours = Colores definidos del usuario
+label.jalviewLite_release = JalviewLite - versión {0}
+label.jaview_build_date = Fecha de creación: {0}
+label.jalview_authors_1 = Authors:  Jim Procter, Andrew Waterhouse, Jan Engelhardt, Lauren Lui,
+label.jalview_authors_2 = Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton.
+label.jalview_dev_managers = Desarrollo gestionado por The Barton Group, University of Dundee, Scotland, UK.
+label.jalview_distribution_lists = Para ayuda, ver el FAQ at www.jalview.org y/o adjuntar la lista de envío jalview-discuss@jalview.org
+label.jalview_please_cite = Si usa Jalview incluya la siguiente cita, por favor:
+label.jalview_cite_1_authors = Waterhouse, A.M., Procter, J.B., Martin, D.M.A, Clamp, M. and Barton, G. J. (2009)
+label.jalview_cite_1_title = Jalview Version 2 - un editor de alineamiento múltiple de secuencias y banco de trabajo de análisis
+label.jalview_cite_1_ref =  Bioinformaticos doi: 10.1093/bioinformatics/btp033
+label.right_click = clic en el botón derecho
+label.to_add_annotation = para añadir anotación
+label.alignment_has_no_annotations = El alineamiento no tiene anotaciones
+label.retrieving_pdb_data = Recuperación de datos PDB...
+label.label = Etiqueta
+label.no_features_added_to_this_alignment = No hay funciones asociadas a este alineamiento!!
+label.features_can_be_added_from_searches_1 = (Las funciones pueden ser añadidas de búsquedas o
+label.features_can_be_added_from_searches_2 = de ficheros de funciones Jalview / GFF)
+label.calculating_pca= Calculando PCA
+label.reveal_columns = Mostrar Columnas
+label.jalview_cannot_open_file = Jalview no puede abrir el fichero
+label.jalview_applet = Aplicación Jalview  
+label.loading_data = Cargando datos
+label.memory_stats = Memoria libre total: {0} MB; Memoria máxima: {1} MB; {2} %
+label.calculating_tree = Calculando árbol
+label.state_queueing = En cola 
+label.state_running = Procesando
+label.state_complete = Completar
+label.state_completed = Finalizado
+label.state_job_cancelled = ¡Trabajo cancelado!
+label.state_job_error = Error del trabajo!
+label.server_error_try_later = ¡Error del servidor! (Intentar más tarde)
+label.error_loading_pdb_data = ¡Error cargando los datos PDB!
+label.fetching_pdb_data = Buscando los datos PDB...
+label.structure_type = Estructura_tipo
+label.settings_for_type = Ajustes para {0}
+label.view_full_application = Ver en la aplicación completa 
+label.load_associated_tree = Cargar árbol asociado ...
+label.load_features_annotations = Cargar características/anotaciones ...
+label.export_features = Exportar características...
+label.export_annotations = Exportar anotaciones ...
+label.jalview_copy = Copiar (sólo Jalview)
+label.jalview_cut = Cortar (sólo Jalview)
+label.to_upper_case = Pasar a mayúsculas
+label.to_lower_case = Pasar a minúsculas
+label.toggle_case = Alternar mayúsculas y minúsculas
+label.edit_name_description = Editar nombre/descripción
+label.create_sequence_feature = Crear función de secuencia
+label.edit_sequence = Editar secuencia
+label.edit_sequences = Editar secuencias
+label.sequence_details = Detalles de la secuencia
+label.jmol_help = Ayuda de Jmol 
+label.all = Todo
+label.sort_by = Ordenar por
+label.sort_by_score = Ordenar por puntuación
+label.sort_by_density = Ordenar por densidad
+label.sequence_sort_by_density = Ordenar las secuencias por densidad
+label.reveal = Revelar
+label.hide_columns = Ocultar columnas
+label.load_jalview_annotations = Cargar un fichero de anotación de Jalivew o un fichero de características
+label.load_tree_file = Cargar un fichero de árbol
+label.retrieve_parse_sequence_database_records_alignment_or_selected_sequences = Recuperar y parsear un registro de secuencia de base de datos para el alineamiento o secuencias actualmente seleccionados
+label.standard_databases = Bases de datos estándar
+label.fetch_embl_uniprot = Recuperar de EMBL/EMBLCDS o Uniprot/PDB y de cualquier fuente DAS seleccionada
+label.reset_min_max_colours_to_defaults = Reiniciar los colores min y max colours a los valores por defecto establecidos en las preferencias de usuario
+label.align_structures_using_linked_alignment_views = Alinear las estructuras utlizando las {0} vistas de alineamiento enlazadas
+label.connect_to_session = Conectar a la sesión {0}
+label.threshold_feature_display_by_score = Filtrar la característica mostrada por puntuación.
+label.threshold_feature_no_thereshold = Sin umbral
+label.threshold_feature_above_thereshold = Por encima del umbral
+label.threshold_feature_below_thereshold = Por debajo del umbral
+label.adjust_thereshold = Ajustar umbral
+label.toggle_absolute_relative_display_threshold = Cambiar entre mostrar el umbral absoluto y el relativo.
+label.display_features_same_type_different_label_using_different_colour = Mostrar las características del mismo tipo con una etiqueta diferente y empleando un color distinto (p.e. características del dominio)
+label.select_colour_minimum_value = Seleccionar el color para el valor mínimo
+label.select_colour_maximum_value = Seleccionar el color para el valor máximo
+label.open_new_jmol_view_with_all_structures_associated_current_selection_superimpose_using_alignment = Abrir una nueva vista Jmol con todas las estructuras asociadas con la selección acxtual y superponer las utilizando el alineamiento.
+label.open_url_param = Abrir URL {0}
+label.open_url_seqs_param = Abrir URL ({0}..) ({1} secuencias)
+label.load_pdb_file_associate_with_sequence = Cargar un fichero PDB y asociarlo con la secuencia '{0}'
+label.reveal_hidden_columns = Revelar las columnas ocultas con el botón derecho del ratón
+label.dark_colour = Oscurecer color
+label.light_colour = Aclarar color
+label.highlightnode = Pulse el botón izquierdo para seleccionar las hojas.<br>Haga doble clic para invertir las hojas.<br>Pulse el botón derecho para cambiar el color.
+label.load_colour_scheme = Cargar esquema cromático
+label.toggle_enabled_views = Cuando está habilitado, permite que se seleccionen varias vistas.
+label.edit_notes_parameter_set = Haga clic para editar las notas de este conjunto de parámetros.
+label.open_local_file = Abrir fichero local
+label.enable_automatically_sort_alignment_when_open_new_tree = Habilite esta opción para ordenar automáticamente<br>el alineamiento cuando abra<br> un nuevo árbol.
+label.listen_for_selections = Atención a las selecciones
+label.selections_mirror_selections_made_same_sequences_other_views = Cuando está habilitado, las selecciones de esta vista serán un reflejo<br>de las selecciones realizadas en las mismas secuencias de otras vistas.
+label.toggle_sequence_visibility = Shift+H cambia la visibilidad de la secuencia
+label.toggle_columns_visibility = Ctrl+H cambia la visibilidad de la columna
+label.toggles_visibility_hidden_selected_regions = H cambiar la visibilidad de las regiones ocultas o seleccionadas
+label.rename_tab_eXpand_reGroup=  Haga clic en el botón derecho para renombrar la pestaña<br>Presione X para expandir las tablas y G para reagrupar.
+label.right_align_sequence_id = Alinear a la derecha el ID de la secuencia
+label.sequence_id_tooltip = Ayuda del ID de la secuencia
+label.no_services = <Sin Servicios>
+label.select_copy_raw_html = Seleccione esta opción si desea copiar el html en bruto
+label.share_data_vamsas_applications = Compartir datos con otras aplicaciones vamsas
+label.connect_to = Conectar a
+label.join_existing_vamsas_session = Unirse a una sesión vamsas existente
+label.from_url = desde una URL
+label.any_trees_calculated_or_loaded_alignment_automatically_sort = Cuando está habilitado, cualquier árbol calculado o cargado en el alineamiento lo ordenará
+label.sort_with_new_tree = Ordenar con el nuevo árbol
+label.from_textbox = desde un área de texto
+label.window = Ventana
+label.preferences = Preferencias
+label.tools = Herramientas
+label.fetch_sequences = Recuperar secuencia(s)
+label.stop_vamsas_session = Parar sesión vamsas
+label.collect_garbage = Recolector de basura
+label.show_memory_usage = Mostrar uso de memoria
+label.show_java_console = Mostrar consola de Java
+label.show_jalview_news = Mostrar las noticias de Jalview
+label.take_snapshot = Tomar captura
+label.monospaced_fonts_faster_to_render = Las fuentes monoespaciadas son más rápidas de pintar
+label.anti_alias_fonts = Fuentes anti-alias (más lentas de pintar)
+label.monospaced_font= Monoespaciadas
+label.quality = Calidad
+label.maximize_window = Maximizar ventana
+label.conservation = Conservación
+label.consensus = Consenso
+label.histogram = Histograma
+label.logo = Logo
+label.non_positional_features = Características no posicionales
+label.database_references = Referencias a base de datos
+label.share_selection_across_views = Compartir la selección en todas las vistas
+label.scroll_highlighted_regions = Desplazarse hasta las regiones resaltadas
+label.gap_symbol = Símbolo del hueco
+label.alignment_colour = Color del alineamiento
+label.address = Dirección
+label.port = Puerto
+label.default_browser_unix = Navegador por defecto (Unix)
+label.send_usage_statistics = Enviar estadísticas de uso
+label.check_for_questionnaires = Comprobar los cuestionarios
+label.check_for_latest_version = Comprobar la última versión
+label.url_linkfrom_sequence_id = URL del enlace del ID de la secuencia
+label.use_proxy_server = Utilizar un servidor proxy
+label.eps_rendering_style = Estilo de visualización EPS
+label.append_start_end = Añadir /inicio-fin (/15-380)
+label.full_sequence_id = ID de la secuencia completo
+label.smooth_font = Fuente alargada
+label.autocalculate_consensus = Autocalcular consenso
+label.pad_gaps = Rellenar huecos
+label.pad_gaps_when_editing = Rellenar huecos al editar
+label.automatically_set_id_width = Establecer automáticamente al anchura del ID
+label.figure_id_column_width = Anchura de la columna del ID de la Figura
+label.use_modeller_output = Utilizar la salidad del Modeller
+label.wrap_alignment = Envolver alineamiento
+label.right_align_ids = Alinear IDs a la derecha
+label.sequence_name_italics = Nombre de la secuencia en cursiva
+label.open_overview = Abrir resumen
+label.default_colour_scheme_for_alignment = Esquema cromático por defecto para el alineamiento
+label.annotation_shading_default = Sombreado por defecto de la anotación
+label.default_minimum_colour_annotation_shading = Por mínimo por defecto para el sombreado de la anotación
+label.default_maximum_colour_annotation_shading = Por máximo por defecto para el sombreado de la anotación
+label.visual = Visual
+label.connections = Conexiones
+label.output = Salida
+label.editing = Edición
+label.das_settings = Configuración DAS
+label.web_services = Servicios web
+label.right_click_to_edit_currently_selected_parameter = Haga clic en el botón derecho para editar el parámetro seleccionado actualmente.
+label.let_jmol_manage_structure_colours = Permitir que Jmol gestione la estructuras cromáticas
+label.marks_leaves_tree_not_associated_with_sequence = Marcar las hojas del árbol que no están asociadas a una secuencia
+label.index_web_services_menu_by_host_site = Indizar los servicios web en el menú por el host que los aloja
+label.option_want_informed_web_service_URL_cannot_be_accessed_jalview_when_starts_up = Marque esta opción si desea ser informado<br>cuando no se pueda acceder a la URL de un servicio web<br>al arrancar Jalview.
+label.new_service_url = Nueva URL del servicio
+label.edit_service_url = Editar la URL del servicio
+label.delete_service_url = Borrar la URL del servicio
+label.details = Detalles
+label.options = Opciones
+label.parameters = Paramétros
+label.available_das_sources = Fuentes DAS disponibles
+label.full_details = Detalles completos
+label.authority = Autoridad
+label.type = Tipo
+label.proxy_server = Servidor proxy
+label.file_output = Fichero de salida
+label.select_input_type = Seleccionar el tipo de entrada
+label.set_options_for_type = Establecer opciones para el tipo
+label.data_input_parameters = Datos de los parámetros de entrada
+label.data_returned_by_service = Datos devueltos por el servicio
+label.rsbs_encoded_service = Servicio RSBS codificado
+label.parsing_errors = Errores de parseo
+label.simple_bioinformatics_rest_services = Simple Bioinformatics Rest Services
+label.web_service_discovery_urls = URL de descubrimiento de servicios web
+label.input_parameter_name = Nombre del parámetro de entrada
+label.short_descriptive_name_for_service = Nombre corto descriptivo del servicio
+label.function_service_performs = Tipo de función que realiza el servicio (p.e. alineamiento, análisis, búsqueda, etc).
+label.brief_description_service = Descripción breve del servicio
+label.url_post_data_service = URL a la que enviar los datos del servicio. Incluya cualquier parámetro especial que se necesite aquí
+label.optional_suffix = Sufijo opcional añadido a la URL al recuperar los resultados del servicio
+label.preferred_gap_character = ¿Qué caracter para el hueco prefiere el servicio?
+label.gap_character = Carácter para hueco
+label.move_return_type_up_order= Mover el tipo de returno hacia arriba en el orden
+label.move_return_type_down_order= Mover el tipo de returno hacia abajo en el orden
+label.update_user_parameter_set = Actualizar el conjunto de parámetros de usuario existente
+label.delete_user_parameter_set = Borrar el conjunto de parámetros de usuario existente
+label.create_user_parameter_set = Crear un nuevo conjunto de parámetro con la configuración actual.
+label.revert_changes_user_parameter_set = Deshacer todos los cambios en el conjunto de parámetros actual
+label.start_job_current_settings = Arrancar trabajo con la configuración actual
+label.cancel_job_close_dialog = Cerrar este diálogo y cancelar el trabajo
+label.input_output = Entrada/Salida
+label.cut_paste = Cortar y pegar
+label.adjusting_parameters_for_calculation = Ajustar los parámetros para el cálculo existente
+label.2d_rna_structure_line = 2D RNA {0}
+label.2d_rna_sequence_name = 2D RNA - {0}
+label.edit_name_and_description_current_group = Editar el nombre y la descripción del grupo actual.
+label.view_structure_for = Visualizar la estructura para {0}
+label.view_all_structures = Visualizar todas las {0} estructuras.
+label.view_all_representative_structures = Visualizar todas las {0} estructuras representativas.
+label.open_new_jmol_view_with_all_representative_structures_associated_current_selection_superimpose_using_alignment = Abrir una nueva vista de Jmol con todas las estructuras representativas\nasociadas con la selecci\u00F3n actual\nsuperpuesta con el alineamiento actual.
+label.associate_structure_with_sequence = Asociar estructura con la secuencia
+label.from_file = desde fichero
+label.enter_pdb_id = Introducir PDB Id
+label.discover_pdb_ids = Buscar PDB ids
+label.text_colour = Color del texto
+label.structure = Estructura
+label.view_structure = Visualizar estructura
+label.clustalx_colours = Colores de Clustalx
+label.above_identity_percentage = Sobre % identidad
+label.create_sequence_details_report_annotation_for = Anotación para {0}
+label.sequece_details_for = Detalles de la secuencia para {0}
+label.sequence_name = Nombre de la secuencia
+label.sequence_description = Descripción de la secuencia
+label.edit_sequence_name_description = Editar el nombre/descripción de la secuencia
+label.spaces_converted_to_backslashes = Los espacios se han convertido en _
+label.no_spaces_allowed_sequence_name = No se permiten espacios en el nombre de la secuencia
+label.select_outline_colour = Seleccionar el color del límite
+label.web_browser_not_found_unix = Unixers\: No es posible encontrar el navegador web por defecto.\nA\u00F1ada la ruta completa de su navegador en la pesta\u00F1a de Preferencias.
+label.web_browser_not_found = No se encuentra el navegador web
+label.select_pdb_file_for = Seleccione un fichero PDB para {0}
+label.html = HTML
+label.wrap = Envolver
+label.show_database_refs = Mostrar las referencias en base de datos
+label.show_non_positional_features = Mostrar las características no posicionales
+label.save_png_image = Guardar como imagen PNG
+label.load_tree_for_sequence_set = Cargar un árbol para este conjunto de secuencias
+label.export_image = Exportar imagen
+label.vamsas_store = Almacén VAMSAS
+label.translate_cDNA = Traducir cDNA
+label.extract_scores = Extraer puntuaciones
+label.get_cross_refs = Obtener referencias cruzadas
+label.sort_alignment_new_tree = Alinear el alineamiento con el nuevo árbol
+label.add_sequences = Añadir secuencias
+label.new_window = Nueva ventana
+label.refresh_available_sources = Refrescar las fuentes disponibles
+label.use_registry = Utilizar el registro
+label.add_local_source = Añadir fuente local
+label.set_as_default = Establecer por defecto
+label.show_labels = Mostrar etiquetas
+label.background_colour = Color de fondo
+label.associate_nodes_with = Asociar nodos con
+label.jalview_pca_calculation = Cálculo del PCA por Jalview
+label.link_name = Nombre del enalce
+label.pdb_file = Fichero PDB
+label.colour_with_jmol = Colorear con Jmol
+label.align_structures = Alinear estructuras
+label.jmol = Jmol
+label.sort_alignment_by_tree = Ordenar alineamiento por árbol
+label.mark_unlinked_leaves = Marcar las hojas como no enlazadas
+label.associate_leaves_with = Asociar hojas con
+label.save_colour_scheme_with_unique_name_added_to_colour_menu = Guarde el esquema cromáticos con un nombre único y se añadirá al menú de colores
+label.case_sensitive = Sensible a mayúsculas
+label.lower_case_colour = Color para las minúsculas
+label.index_by_host = Indizar por host
+label.index_by_type = Indizar por tipo
+label.enable_jabaws_services = Habilitar servicios JABAWS
+label.display_warnings = Mostrar advertencias
+label.move_url_up = Mover la URL hacia arriba
+label.move_url_down = Mover la URL hacia abajo
+label.add_sbrs_definition = Añadir una definición SBRS 
+label.edit_sbrs_definition = Editar una definición SBRS 
+label.delete_sbrs_definition = Borrar una definición SBRS 
+label.your_sequences_have_been_verified = Sus secuencias has sido verificadas en una base de datos de secuencias conocidas. Algunos de sus ID se han alterado y\n, probablemente, el residuo de inicio/fin se haya actualizado.\nGuarde su alineamiento para mantener el ID actualizado.\n\n 
+label.sequence_names_updated = Nombres de secuencia actualizados
+label.dbref_search_completed = Búsqueda de DBRef terminada
+label.show_all_chains = Mostrar todas las cadenas
+label.fetch_all_param = Recuperar todas {0}
+label.paste_new_window = Pegar en una nueva ventana
+label.settings_for_param = Configuración para {0}
+label.view_params = Visualizar {0}
+label.select_all_views = Seleccionar todas las vistas
+label.align_sequences_to_existing_alignment = Alinear las secuencias con el alineamiento existente
+label.realign_with_params = Realinear con {0}
+label.calcname_with_default_settings = {0} por defecto
+label.action_with_default_settings = {0} con la configuración por defecto
+label.edit_settings_and_run = Editar la configuración y ejecutar...
+label.view_and_change_parameters_before_alignment = Ver y cambiar los parámetros antes del alineamiento
+label.run_with_preset_params = Ejecutar {0} con preconfiguración
+label.view_and_change_parameters_before_running_calculation = Ver y cambiar los parámetros antes de lanzar el cálculo
+label.view_documentation = Ver documentación
+label.select_return_type = Seleccionar el tipo de retorno
+label.translation_of_params = Traducción de {0}
+label.features_for_params = Características de - {0}
+label.annotations_for_params = Anotaciones de - {0}
+label.generating_features_for_params = Generando características de - {0}
+label.generating_annotations_for_params = Generando anotaciones de - {0}
+label.varna_params = VARNA - {0}
+label.sequence_feature_settings = Configuración de las características de la secuencia
+label.pairwise_aligned_sequences = Secuencias alineadas a pares
+label.original_data_for_params = Datos originales de {0}
+label.points_for_params = Puntos de {0}
+label.transformed_points_for_params = Puntos transformados de {0}
+label.graduated_color_for_params = Color graduado para la característica de {0}
+label.select_backgroud_colour = Seleccionar color de fondo
+label.invalid_font = Fuente no válida
+label.separate_multiple_accession_ids = Separar los accession id con un punto y coma ";"
+label.replace_commas_semicolons = Cambiar comas por puntos y comas
+label.parsing_failed_syntax_errors_shown_below_param = Parseo erróneo. A continuación, se muestras los errores de sintaxis {0}
+label.parsing_failed_unrecoverable_exception_thrown_param = \nParseo err\u00F3neo. Se ha lanzado una excepci\u00F3n fatal\:\n {0}
+label.example_query_param = Consulta de ejemplo: {0}
+label.enter_value_increase_conservation_visibility = Introduzca un valor para incrementar la visibilidad de la conservación
+label.enter_percentage_identity_above_which_colour_residues = Introduza un % de identidad por encima del cual se colorearán los residuos
+label.wswublast_client_credits = Para mostrar las caracter\u00EDsticas de una secuencia, debe indicarse un id de Uniprot cuya secuencia se corresponda al 100 % con la introducida.\nPara mostrar estas caracter\u00EDsticas, prueba a cambar los nombre de sus secuencia con los ID que se sugieren a continuaci\u00F3n.\n\nRunning WSWUBlast at EBI.\nPlease quote Pillai S., Silventoinen V., Kallio K., Senger M., Sobhany S., Tate J., Velankar S., Golovin A., Henrick K., Rice P., Stoehr P., Lopez R.\nSOAP-based services provided by the European Bioinformatics Institute.\nNucleic Acids Res. 33(1)\:W25-W28 (2005));
+label.blasting_for_unidentified_sequence = Ejecutar BLAST para la secuencias sin identificar
+label.select_columns_containing = Seleccione las columnas que contengan
+label.select_columns_not_containing = Seleccione las columnas que no contengan
+option.trim_retrieved_seqs = Ajustar las secuencias recuperadas
+label.trim_retrieved_sequences = Cuando la secuencia de referencia es más larga que la secuencia con la que está trabajando, sólo se mantienen las subsecuencias relevantes.
+label.use_sequence_id_1 = Utilice $SEQUENCE_ID$ o $SEQUENCE_ID=/<regex>/=$
+label.use_sequence_id_2 = \nto para embeber el id de la secuencia en una URL
+label.ws_parameters_for = Parámetros para {0}
+label.switch_server = Cambiar servidor
+label.open_jabaws_web_page = Abre el página principal del servidor JABAWS en un navegador web
+label.choose_jabaws_server = Escoja un servidor para ejecutar este servicio
+label.services_at = Servicios en {0}
+label.rest_client_submit = {0} utilizando {1}
+label.fetch_retrieve_from =Recuperar de {0}
+label.fetch_retrieve_from_all_sources = Recuperar de todas las fuentes {0} en {1}<br>La primera es :{2} 
+label.feature_settings_click_drag = Haga clic o arrastre los tipos de las características hacia arriba o hacia abajo para cambiar el orden de visualización.<br/>Haga doble clic para seleccionar las columnas que contienen las características del alineamiento/selección actual.<br/>Presionando Alt seleccionará las columnas exteriores a las características en lugar de las interiores<br/>Presione Shift para modificar la selección actual (en lugar de borrarla)<br/>Presione CTRL o Command/Meta para cambiar las columans externas o internas a las características<br/>
+label.opt_and_params_further_details = ver los detalles adicionales haciendo clic en el botón derecho
+label.opt_and_params_show_brief_desc_image_link = Haga clic para ver una descripción breve<br><img src="{0}"/>Haga clic en el botón derecho para obtener información adicional. 
+label.opt_and_params_show_brief_desc = Haga clic para ver una descripción breve<br>
+label.adjusts_width_generated_eps_png = Ajusta la anchura del fichero EPS o PNG generado para asegurar incluso que el ID de la secuencia más larga o las etiquetas de anotación se muestran
+label.manually_specify_width_left_column = Especificar manualmente la anchura de la columna izquierda en las etiquetas de los ID de la secuencia y las anotaciones se mostrar en las figuras del alineamiento exportado.Esta configuraicón se ignorará si está marcada la opción 'Establecer automáticamente al anchura del ID'
+label.job_created_when_checked = Cuando está habilitado, se crea un trabajo para cada secuencia de la selección actual
+label.when_checked_job_visible_region_and_results = Cuando está habilitado, se crea un único trabajo para la región visible y los resultados de mapean en su ubicación dentro del alineamiento. En caso contrario, se creará un trabajo para cada región visible y contigua en el alineamiento o selección actual (p.e. un alineamiento múlitple).
+label.flat_file_representation = La representación del fichero plano de este servicio utilizando el formalismo Really Simple Bioinformatics Service
+label.result_of_parsing_rsbs = Resultados de parsear la representación RSBS
+label.user_preset = Preselección de usuario
+label.service_preset = Preselección del servicio
+label.run_with_preset = Ejecutar {0} con preselección
+label.view_service_doc_url = Visualizar <a href="{0}">{1}</a>
+label.submit_sequence = Enviar {0} {1} {2} {3} a<br/>{4}
+action.by_title_param = por {0}
+label.alignment = Alineamiento
+label.secondary_structure_prediction = Predicción de la estructura secundaria
+label.sequence_database_search = Búsqueda en base de datos de secuencias
+label.analysis = Análisis
+label.protein_disorder = Desorden en la proteína 
+label.source_from_db_source = Fuentes de {0}
+label.from_msname = de '{0}'
+label.superpose_with = Superponer con...
+action.do = Hacer
+label.scale_label_to_column = Ajustar la etiqueta a la columna
+label.add_new_row = Añadir nuevo fila
+label.edit_label_description = Editar etiqueta/descripción
+label.hide_row = Ocultar esta fila
+label.delete_row = Borrar esta fila
+label.show_all_hidden_rows = Mostrar todas las filas ocultas
+label.export_annotation = Exportar anotación
+label.copy_consensus_sequence = Copiar secuencia de consenso
+label.helix = Hélice
+label.sheet = Hoja
+label.rna_helix = Hélice de ARN
+label.remove_annotation = Borrar anotación
+label.colour_by = Colorear por...
+label.muscle_multiple_protein_sequence_alignment = Alineamiento múltiple de secuencias de proteínas con Muscle
+label.mafft_multiple_sequence_alignment = Alineamiento múltiple de secuencias con MAFFT
+label.clustalw_multiple_sequence_alignment = Alineamiento múltiple de secuencias con ClustalW
+label.jnet_secondary_structure_prediction = Predicción de la estructura secundaria con JNet
+label.multiharmony = Multi-Harmony
+label.unable_start_web_service_analysis = No es posible iniciar el servicio web de análisis
+label.job_couldnt_be_started_check_input = El trabajo no puede arrancarse. Por favor, compruebe los parámetros de entrada y los mensajes de advertencia de la consola de Jalview.
+label.prompt_each_time = Preguntar siempre
+label.use_source = Fuente
+label.couldnt_save_project = No es posible guardar el proyecto
+label.error_whilst_saving_current_state_to = Error mientras se guardaba el estado a {0}
+label.error_whilst_loading_project_from = Error cargado el proyecto desde  {0}
+label.couldnt_load_project = No es posible cargar el proyecto
index 593fd58..c691302 100644 (file)
 # You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
 # The Jalview Authors are detailed in the 'AUTHORS' file.
 ###############################################################################
-# THE CASTOR PROPERTIES FILE\r
-# This file specifies values for Castor run-time which may be configured\r
-# by the user.\r
-# $Id$\r
-\r
-# This section defines Backwards compatibility switches.\r
-#\r
-# Hashtable/Map default mapping.\r
-# For backward compatibility with 0.9.5.2 and earlier.\r
-#\r
-#org.exolab.castor.xml.saveMapKeys=false\r
-\r
-# Defines the default XML parser to be used by Castor.\r
-# The parser must implement org.xml.sax.Parser.\r
-#\r
-org.exolab.castor.parser=org.apache.xerces.parsers.SAXParser\r
-\r
-# Defines the (default) XML serializer factory to use by Castor, which must\r
-# implement org.exolab.castor.xml.SerializerFactory; default is \r
-# org.exolab.castor.xml.XercesXMLSerializerFactory\r
-# \r
-# When using Castor XML with JDK 5.0, you may switch to the XercesJDK5XMLSerializerFactory\r
-# which will use the Xerces instance as shipped with the JDK itself; this avoids\r
-# having to download another Xerces instance and installing it. \r
-org.exolab.castor.xml.serializer.factory=org.exolab.castor.xml.XercesXMLSerializerFactory\r
-#org.exolab.castor.xml.serializer.factory=org.exolab.castor.xml.XercesJDK5XMLSerializerFactory\r
-\r
-# Defines the NodeType for use with Java primitive types (int, long, boolean,\r
-# etc). This value is only used by the Introspector.  Valid values are either\r
-# "attribute" or "element". By default, all primitives are marshaled as\r
-# attributes. Uncomment the following line to change the NodeType to element.\r
-#\r
-#org.exolab.castor.xml.introspector.primitive.nodetype=element\r
-\r
-# Defines the Naming "style" or conventions to use when creating XML names\r
-# from Java class or field names.\r
-# Valid values are as follows:\r
-# -----------------------------------------------------------------\r
-# lower (default)  |  All names are lowercase with hyphens\r
-#                  |  separating words.\r
-#                  |\r
-#                  |  Example: personInfo = person-info\r
-# -----------------------------------------------------------------\r
-# mixed            |  All names are mixed case, with Uppercase\r
-#                  |  character as the first letter of a new word.\r
-#                  |\r
-#                  |  Example: personInfo = personInfo\r
-#                  |  Example: FooBar     = fooBar\r
-# -----------------------------------------------------------------\r
-# {Any ClassName}  |  Any Class which implements\r
-#                  |  org.exolab.castor.xml.XMLNaming\r
-# -----------------------------------------------------------------\r
-#\r
-# By default, all names are treated as the "lower" option.  To preserve the\r
-# Java mixed-case conventions, uncomment the following line.\r
-#\r
-#org.exolab.castor.xml.naming=mixed\r
-\r
-###############################\r
-# REGULAR EXPRESSION EVALUATORS\r
-#\r
-# Defines the Regular Expression Evaluator to be used by Castor.\r
-# The evaluator must implement org.exolab.castor.util.RegExpEvaluator.\r
-#\r
-# Uncomment the following to basically suppress Regular expressions evaluation:\r
-#org.exolab.castor.regexp=org.exolab.castor.xml.util.AlwaysTrueRegExpEvaluator\r
-#\r
-# An implementation which uses the Jakarta RegExp library:\r
-#org.exolab.castor.regexp=org.exolab.castor.util.JakartaRegExpEvaluator\r
-#\r
-# An implementation which uses the Jakarta ORO library:\r
-org.exolab.castor.regexp=org.exolab.castor.util.JakartaOroEvaluator\r
-\r
-# True if all documents should be indented on output by default.\r
-# Defaults to false.\r
-#\r
-#org.exolab.castor.indent=true\r
-\r
-# True if xml documents should be validated by the SAX Parser\r
-# Defaults to false.\r
-#\r
-org.exolab.castor.parser.validation=false\r
-\r
-# True for parser to support Namespaces.\r
-# Defaults to false.\r
-#\r
-org.exolab.castor.parser.namespaces=false\r
-\r
-# True if all documents should be validated by the marshaling framework\r
-# Defaults to true.\r
-#\r
-org.exolab.castor.marshalling.validation=true\r
-\r
-# Comma separated list of SAX 2 features that should be enabled for the\r
-# default parser.\r
-#\r
-#org.exolab.castor.sax.features=\r
-\r
-# Comma separated list of SAX 2 features that should be disabled for the\r
-# default parser.\r
-#\r
-#org.exolab.castor.sax.features-to-disable\r
-\r
-# True if debugging output should be generated.\r
-# Defaults to false.\r
-#\r
-org.exolab.castor.debug=false\r
-\r
-# List of collection handlers for Java 1.1 and Java 1.2 run-times:\r
-#\r
-org.exolab.castor.mapping.collections=\\r
-  org.exolab.castor.mapping.loader.J1CollectionHandlers,\\r
-  org.exolab.castor.mapping.loader.J2CollectionHandlers\r
-\r
-# List of persistence factories for the supported database servers:\r
-#\r
-org.exolab.castor.jdo.engines=\\r
-  org.exolab.castor.jdo.drivers.OracleFactory,\\r
-  org.exolab.castor.jdo.drivers.PostgreSQLFactory,\\r
-  org.exolab.castor.jdo.drivers.SybaseFactory,\\r
-  org.exolab.castor.jdo.drivers.SQLServerFactory,\\r
-  org.exolab.castor.jdo.drivers.DB2Factory,\\r
-  org.exolab.castor.jdo.drivers.InformixFactory,\\r
-  org.exolab.castor.jdo.drivers.HsqlFactory,\\r
-  org.exolab.castor.jdo.drivers.InstantDBFactory,\\r
-  org.exolab.castor.jdo.drivers.InterbaseFactory,\\r
-  org.exolab.castor.jdo.drivers.MySQLFactory,\\r
-  org.exolab.castor.jdo.drivers.SapDbFactory,\\r
-  org.exolab.castor.jdo.drivers.GenericFactory,\\r
-  org.exolab.castor.jdo.drivers.DerbyFactory,\\r
-  org.castor.jdo.drivers.PointbaseFactory,\\r
-  org.castor.jdo.drivers.ProgressFactory\r
-\r
-# List of key generator factories:\r
-#\r
-org.exolab.castor.jdo.keyGeneratorFactories=\\r
-  org.exolab.castor.jdo.keygen.MaxKeyGeneratorFactory,\\r
-  org.exolab.castor.jdo.keygen.HighLowKeyGeneratorFactory,\\r
-  org.exolab.castor.jdo.keygen.IdentityKeyGeneratorFactory,\\r
-  org.exolab.castor.jdo.keygen.SequenceKeyGeneratorFactory,\\r
-  org.exolab.castor.jdo.keygen.UUIDKeyGeneratorFactory\r
-\r
-# Collection handlers for the source code generator:\r
-#\r
-org.exolab.castor.builder.type.j2=\\r
-  org.exolab.castor.builder.FieldInfoFactoryJ2\r
-org.exolab.castor.builder.type.j1=\\r
-  org.exolab.castor.builder.FieldInfoFactory\r
-org.exolab.castor.builder.type.odmg=\\r
-  org.exolab.castor.builder.FieldInfoFactoryODMG30\r
-\r
-# Configures the default time zone to apply to dates/times fetched from\r
-# database fields (if not already part of the data).  Specify same format as\r
-# in java.util.TimeZone.getTimeZone, or the empty string to use the computer's\r
-# local time zone. Please see http://de.wikipedia.org/wiki/Zeitzone for\r
-# detailed information about time zones.\r
-#\r
-org.exolab.castor.jdo.defaultTimeZone=\r
-#org.exolab.castor.jdo.defaultTimeZone=GMT-8:00\r
-\r
-# List of TxSynchronizeable implementations:\r
-#\r
-#org.exolab.castor.persist.TxSynchronizable=\r
-\r
-# Sets the buffer size in bytes for fetching LOBs (this is dependent upon\r
-# the JDBC driver implementation).  The value below == 5k.\r
-#\r
-org.exolab.castor.jdo.lobBufferSize=5120\r
-\r
-# True if database configuration should be initalization\r
-# when loading it (default: true).\r
-#\r
-#org.exolab.castor.jdo.DatabaseInitializeAtLoad=true\r
-\r
-# True if proxy classes should be used for JDBC connections and\r
-# prepared statements.\r
-# Defaults to true.\r
-#\r
-org.exolab.castor.persist.useProxies=false\r
-\r
-# MappingLoader implementations:\r
-#\r
-org.castor.mapping.loaderFactories=\\r
-  org.castor.mapping.JDOMappingLoaderFactory,\\r
-  org.castor.mapping.XMLMappingLoaderFactory\r
-\r
-# Cache implementations:\r
-#\r
-org.castor.cache.Factories=\\r
-  org.castor.cache.simple.NoCacheFactory,\\r
-  org.castor.cache.simple.TimeLimitedFactory,\\r
-  org.castor.cache.simple.CountLimitedFactory,\\r
-  org.castor.cache.simple.UnlimitedFactory,\\r
-  org.castor.cache.distributed.FKCacheFactory,\\r
-  org.castor.cache.distributed.JcsCacheFactory,\\r
-  org.castor.cache.distributed.JCacheFactory,\\r
-  org.castor.cache.distributed.CoherenceCacheFactory,\\r
-  org.castor.cache.distributed.OsCacheFactory,\\r
-  org.castor.cache.hashbelt.FIFOHashbeltFactory,\\r
-  org.castor.cache.hashbelt.LRUHashbeltFactory,\\r
-  org.castor.cache.distributed.EHCacheFactory,\\r
-  org.castor.cache.distributed.GigaspacesCacheFactory\r
-\r
-# TransactionManagerFactory implementations:\r
-#\r
-org.castor.transactionmanager.Factories=\\r
-  org.castor.transactionmanager.WebSphereTransactionManagerFactory,\\r
-  org.castor.transactionmanager.WebSphere5TransactionManagerFactory,\\r
-  org.castor.transactionmanager.WebSphere51TransactionManagerFactory,\\r
-  org.castor.transactionmanager.LocalTransactionManagerFactory,\\r
-  org.castor.transactionmanager.JNDIENCTransactionManagerFactory,\\r
-  org.castor.transactionmanager.JOTMTransactionManagerFactory\r
-\r
-# Selects whether the TransactionManager should be initialized at registration,\r
-# or lazily when requested for the first time.\r
-# Defaults to false.\r
-#\r
-org.castor.transactionmanager.InitializeAtRegistration=false\r
-\r
-# Instructs Castor JDO to use the JDBC 3.0-specific features to obtain\r
-# the generated value of an identity column.\r
-# Defaults to false.\r
-#\r
-org.castor.jdo.use.jdbc30=false\r
-\r
-# Specifies whether to use ANSI-compliant SQL for MS SQL Server.\r
-# Defaults to false.\r
-#\r
-org.exolab.castor.jdo.sqlserver.ansi-compliant=false\r
-\r
-# Specifyies whether the ClassDescriptorResolver should (automatically) search\r
-# for and consult with package mapping files (.castor.xml) to retrieve class\r
-# descriptor information; on by default.\r
-# Defaults to true.\r
-#\r
-#org.exolab.castor.xml.loadPackageMappings=false\r
+# THE CASTOR PROPERTIES FILE
+# This file specifies values for Castor run-time which may be configured
+# by the user.
+# $Id$
+
+# This section defines Backwards compatibility switches.
+#
+# Hashtable/Map default mapping.
+# For backward compatibility with 0.9.5.2 and earlier.
+#
+#org.exolab.castor.xml.saveMapKeys=false
+
+# Defines the default XML parser to be used by Castor.
+# The parser must implement org.xml.sax.Parser.
+#
+org.exolab.castor.parser=org.apache.xerces.parsers.SAXParser
+
+# Defines the (default) XML serializer factory to use by Castor, which must
+# implement org.exolab.castor.xml.SerializerFactory; default is 
+# org.exolab.castor.xml.XercesXMLSerializerFactory
+# 
+# When using Castor XML with JDK 5.0, you may switch to the XercesJDK5XMLSerializerFactory
+# which will use the Xerces instance as shipped with the JDK itself; this avoids
+# having to download another Xerces instance and installing it. 
+org.exolab.castor.xml.serializer.factory=org.exolab.castor.xml.XercesXMLSerializerFactory
+#org.exolab.castor.xml.serializer.factory=org.exolab.castor.xml.XercesJDK5XMLSerializerFactory
+
+# Defines the NodeType for use with Java primitive types (int, long, boolean,
+# etc). This value is only used by the Introspector.  Valid values are either
+# "attribute" or "element". By default, all primitives are marshaled as
+# attributes. Uncomment the following line to change the NodeType to element.
+#
+#org.exolab.castor.xml.introspector.primitive.nodetype=element
+
+# Defines the Naming "style" or conventions to use when creating XML names
+# from Java class or field names.
+# Valid values are as follows:
+# -----------------------------------------------------------------
+# lower (default)  |  All names are lowercase with hyphens
+#                  |  separating words.
+#                  |
+#                  |  Example: personInfo = person-info
+# -----------------------------------------------------------------
+# mixed            |  All names are mixed case, with Uppercase
+#                  |  character as the first letter of a new word.
+#                  |
+#                  |  Example: personInfo = personInfo
+#                  |  Example: FooBar     = fooBar
+# -----------------------------------------------------------------
+# {Any ClassName}  |  Any Class which implements
+#                  |  org.exolab.castor.xml.XMLNaming
+# -----------------------------------------------------------------
+#
+# By default, all names are treated as the "lower" option.  To preserve the
+# Java mixed-case conventions, uncomment the following line.
+#
+#org.exolab.castor.xml.naming=mixed
+
+###############################
+# REGULAR EXPRESSION EVALUATORS
+#
+# Defines the Regular Expression Evaluator to be used by Castor.
+# The evaluator must implement org.exolab.castor.util.RegExpEvaluator.
+#
+# Uncomment the following to basically suppress Regular expressions evaluation:
+#org.exolab.castor.regexp=org.exolab.castor.xml.util.AlwaysTrueRegExpEvaluator
+#
+# An implementation which uses the Jakarta RegExp library:
+#org.exolab.castor.regexp=org.exolab.castor.util.JakartaRegExpEvaluator
+#
+# An implementation which uses the Jakarta ORO library:
+org.exolab.castor.regexp=org.exolab.castor.util.JakartaOroEvaluator
+
+# True if all documents should be indented on output by default.
+# Defaults to false.
+#
+#org.exolab.castor.indent=true
+
+# True if xml documents should be validated by the SAX Parser
+# Defaults to false.
+#
+org.exolab.castor.parser.validation=false
+
+# True for parser to support Namespaces.
+# Defaults to false.
+#
+org.exolab.castor.parser.namespaces=false
+
+# True if all documents should be validated by the marshaling framework
+# Defaults to true.
+#
+org.exolab.castor.marshalling.validation=true
+
+# Comma separated list of SAX 2 features that should be enabled for the
+# default parser.
+#
+#org.exolab.castor.sax.features=
+
+# Comma separated list of SAX 2 features that should be disabled for the
+# default parser.
+#
+#org.exolab.castor.sax.features-to-disable
+
+# True if debugging output should be generated.
+# Defaults to false.
+#
+org.exolab.castor.debug=false
+
+# List of collection handlers for Java 1.1 and Java 1.2 run-times:
+#
+org.exolab.castor.mapping.collections=\
+  org.exolab.castor.mapping.loader.J1CollectionHandlers,\
+  org.exolab.castor.mapping.loader.J2CollectionHandlers
+
+# List of persistence factories for the supported database servers:
+#
+org.exolab.castor.jdo.engines=\
+  org.exolab.castor.jdo.drivers.OracleFactory,\
+  org.exolab.castor.jdo.drivers.PostgreSQLFactory,\
+  org.exolab.castor.jdo.drivers.SybaseFactory,\
+  org.exolab.castor.jdo.drivers.SQLServerFactory,\
+  org.exolab.castor.jdo.drivers.DB2Factory,\
+  org.exolab.castor.jdo.drivers.InformixFactory,\
+  org.exolab.castor.jdo.drivers.HsqlFactory,\
+  org.exolab.castor.jdo.drivers.InstantDBFactory,\
+  org.exolab.castor.jdo.drivers.InterbaseFactory,\
+  org.exolab.castor.jdo.drivers.MySQLFactory,\
+  org.exolab.castor.jdo.drivers.SapDbFactory,\
+  org.exolab.castor.jdo.drivers.GenericFactory,\
+  org.exolab.castor.jdo.drivers.DerbyFactory,\
+  org.castor.jdo.drivers.PointbaseFactory,\
+  org.castor.jdo.drivers.ProgressFactory
+
+# List of key generator factories:
+#
+org.exolab.castor.jdo.keyGeneratorFactories=\
+  org.exolab.castor.jdo.keygen.MaxKeyGeneratorFactory,\
+  org.exolab.castor.jdo.keygen.HighLowKeyGeneratorFactory,\
+  org.exolab.castor.jdo.keygen.IdentityKeyGeneratorFactory,\
+  org.exolab.castor.jdo.keygen.SequenceKeyGeneratorFactory,\
+  org.exolab.castor.jdo.keygen.UUIDKeyGeneratorFactory
+
+# Collection handlers for the source code generator:
+#
+org.exolab.castor.builder.type.j2=\
+  org.exolab.castor.builder.FieldInfoFactoryJ2
+org.exolab.castor.builder.type.j1=\
+  org.exolab.castor.builder.FieldInfoFactory
+org.exolab.castor.builder.type.odmg=\
+  org.exolab.castor.builder.FieldInfoFactoryODMG30
+
+# Configures the default time zone to apply to dates/times fetched from
+# database fields (if not already part of the data).  Specify same format as
+# in java.util.TimeZone.getTimeZone, or the empty string to use the computer's
+# local time zone. Please see http://de.wikipedia.org/wiki/Zeitzone for
+# detailed information about time zones.
+#
+org.exolab.castor.jdo.defaultTimeZone=
+#org.exolab.castor.jdo.defaultTimeZone=GMT-8:00
+
+# List of TxSynchronizeable implementations:
+#
+#org.exolab.castor.persist.TxSynchronizable=
+
+# Sets the buffer size in bytes for fetching LOBs (this is dependent upon
+# the JDBC driver implementation).  The value below == 5k.
+#
+org.exolab.castor.jdo.lobBufferSize=5120
+
+# True if database configuration should be initalization
+# when loading it (default: true).
+#
+#org.exolab.castor.jdo.DatabaseInitializeAtLoad=true
+
+# True if proxy classes should be used for JDBC connections and
+# prepared statements.
+# Defaults to true.
+#
+org.exolab.castor.persist.useProxies=false
+
+# MappingLoader implementations:
+#
+org.castor.mapping.loaderFactories=\
+  org.castor.mapping.JDOMappingLoaderFactory,\
+  org.castor.mapping.XMLMappingLoaderFactory
+
+# Cache implementations:
+#
+org.castor.cache.Factories=\
+  org.castor.cache.simple.NoCacheFactory,\
+  org.castor.cache.simple.TimeLimitedFactory,\
+  org.castor.cache.simple.CountLimitedFactory,\
+  org.castor.cache.simple.UnlimitedFactory,\
+  org.castor.cache.distributed.FKCacheFactory,\
+  org.castor.cache.distributed.JcsCacheFactory,\
+  org.castor.cache.distributed.JCacheFactory,\
+  org.castor.cache.distributed.CoherenceCacheFactory,\
+  org.castor.cache.distributed.OsCacheFactory,\
+  org.castor.cache.hashbelt.FIFOHashbeltFactory,\
+  org.castor.cache.hashbelt.LRUHashbeltFactory,\
+  org.castor.cache.distributed.EHCacheFactory,\
+  org.castor.cache.distributed.GigaspacesCacheFactory
+
+# TransactionManagerFactory implementations:
+#
+org.castor.transactionmanager.Factories=\
+  org.castor.transactionmanager.WebSphereTransactionManagerFactory,\
+  org.castor.transactionmanager.WebSphere5TransactionManagerFactory,\
+  org.castor.transactionmanager.WebSphere51TransactionManagerFactory,\
+  org.castor.transactionmanager.LocalTransactionManagerFactory,\
+  org.castor.transactionmanager.JNDIENCTransactionManagerFactory,\
+  org.castor.transactionmanager.JOTMTransactionManagerFactory
+
+# Selects whether the TransactionManager should be initialized at registration,
+# or lazily when requested for the first time.
+# Defaults to false.
+#
+org.castor.transactionmanager.InitializeAtRegistration=false
+
+# Instructs Castor JDO to use the JDBC 3.0-specific features to obtain
+# the generated value of an identity column.
+# Defaults to false.
+#
+org.castor.jdo.use.jdbc30=false
+
+# Specifies whether to use ANSI-compliant SQL for MS SQL Server.
+# Defaults to false.
+#
+org.exolab.castor.jdo.sqlserver.ansi-compliant=false
+
+# Specifyies whether the ClassDescriptorResolver should (automatically) search
+# for and consult with package mapping files (.castor.xml) to retrieve class
+# descriptor information; on by default.
+# Defaults to true.
+#
+#org.exolab.castor.xml.loadPackageMappings=false
index 366b776..876db03 100755 (executable)
-/*\r
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)\r
- * Copyright (C) 2014 The Jalview Authors\r
- * \r
- * This file is part of Jalview.\r
- * \r
- * Jalview is free software: you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License \r
- * as published by the Free Software Foundation, either version 3\r
- * of the License, or (at your option) any later version.\r
- *  \r
- * Jalview is distributed in the hope that it will be useful, but \r
- * WITHOUT ANY WARRANTY; without even the implied warranty \r
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR \r
- * PURPOSE.  See the GNU General Public License for more details.\r
- * \r
- * You should have received a copy of the GNU General Public License\r
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.\r
- * The Jalview Authors are detailed in the 'AUTHORS' file.\r
- */\r
-package jalview.datamodel;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import fr.orsay.lri.varna.models.rna.RNA;\r
-\r
-/**\r
- * DOCUMENT ME!\r
- * \r
- * @author $author$\r
- * @version $Revision$\r
- */\r
-public interface SequenceI\r
-{\r
-  /**\r
-   * Set the display name for the sequence\r
-   * \r
-   * @param name\r
-   */\r
-  public void setName(String name);\r
-\r
-  /**\r
-   * Get the display name\r
-   */\r
-  public String getName();\r
-\r
-  /**\r
-   * Set start position of first non-gapped symbol in sequence\r
-   * \r
-   * @param start\r
-   *          new start position\r
-   */\r
-  public void setStart(int start);\r
-\r
-  /**\r
-   * get start position of first non-gapped residue in sequence\r
-   * \r
-   * @return\r
-   */\r
-  public int getStart();\r
-\r
-  /**\r
-   * get the displayed id of the sequence\r
-   * \r
-   * @return true means the id will be returned in the form\r
-   *         DisplayName/Start-End\r
-   */\r
-  public String getDisplayId(boolean jvsuffix);\r
-\r
-  /**\r
-   * set end position for last residue in sequence\r
-   * \r
-   * @param end\r
-   */\r
-  public void setEnd(int end);\r
-\r
-  /**\r
-   * get end position for last residue in sequence getEnd()>getStart() unless\r
-   * sequence only consists of gap characters\r
-   * \r
-   * @return\r
-   */\r
-  public int getEnd();\r
-\r
-  /**\r
-   * @return length of sequence including gaps\r
-   * \r
-   */\r
-  public int getLength();\r
-\r
-  /**\r
-   * Replace the sequence with the given string\r
-   * \r
-   * @param sequence\r
-   *          new sequence string\r
-   */\r
-  public void setSequence(String sequence);\r
-\r
-  /**\r
-   * @return sequence as string\r
-   */\r
-  public String getSequenceAsString();\r
-\r
-  /**\r
-   * get a range on the sequence as a string\r
-   * \r
-   * @param start\r
-   *          position relative to start of sequence including gaps (from 0)\r
-   * @param end\r
-   *          position relative to start of sequence including gaps (from 0)\r
-   * \r
-   * @return String containing all gap and symbols in specified range\r
-   */\r
-  public String getSequenceAsString(int start, int end);\r
-\r
-  /**\r
-   * Get the sequence as a character array\r
-   * \r
-   * @return seqeunce and any gaps\r
-   */\r
-  public char[] getSequence();\r
-\r
-  /**\r
-   * get stretch of sequence characters in an array\r
-   * \r
-   * @param start\r
-   *          absolute index into getSequence()\r
-   * @param end\r
-   *          exclusive index of last position in segment to be returned.\r
-   * \r
-   * @return char[max(0,end-start)];\r
-   */\r
-  public char[] getSequence(int start, int end);\r
-\r
-  /**\r
-   * create a new sequence object from start to end of this sequence\r
-   * \r
-   * @param start\r
-   *          int\r
-   * @param end\r
-   *          int\r
-   * @return SequenceI\r
-   */\r
-  public SequenceI getSubSequence(int start, int end);\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   * \r
-   * @param i\r
-   *          DOCUMENT ME!\r
-   * \r
-   * @return DOCUMENT ME!\r
-   */\r
-  public char getCharAt(int i);\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   * \r
-   * @param desc\r
-   *          DOCUMENT ME!\r
-   */\r
-  public void setDescription(String desc);\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   * \r
-   * @return DOCUMENT ME!\r
-   */\r
-  public String getDescription();\r
-\r
-  /**\r
-   * Return the alignment column for a sequence position * Return the alignment\r
-   * position for a sequence position\r
-   * \r
-   * @param pos\r
-   *          lying from start to end\r
-   * \r
-   * @return aligned column for residue (0 if residue is upstream from\r
-   *         alignment, -1 if residue is downstream from alignment) note.\r
-   *         Sequence object returns sequence.getEnd() for positions upstream\r
-   *         currently. TODO: change sequence for\r
-   *         assert(findIndex(seq.getEnd()+1)==-1) and fix incremental bugs\r
-   * \r
-   */\r
-  public int findIndex(int pos);\r
-\r
-  /**\r
-   * Returns the sequence position for an alignment position\r
-   * \r
-   * @param i\r
-   *          column index in alignment (from 1)\r
-   * \r
-   * @return residue number for residue (left of and) nearest ith column\r
-   */\r
-  public int findPosition(int i);\r
-\r
-  /**\r
-   * Returns an int array where indices correspond to each residue in the\r
-   * sequence and the element value gives its position in the alignment\r
-   * \r
-   * @return int[SequenceI.getEnd()-SequenceI.getStart()+1] or null if no\r
-   *         residues in SequenceI object\r
-   */\r
-  public int[] gapMap();\r
-\r
-  /**\r
-   * Returns an int array where indices correspond to each position in sequence\r
-   * char array and the element value gives the result of findPosition for that\r
-   * index in the sequence.\r
-   * \r
-   * @return int[SequenceI.getLength()]\r
-   */\r
-  public int[] findPositionMap();\r
-\r
-  /**\r
-   * Delete a range of aligned sequence columns, creating a new dataset sequence\r
-   * if necessary and adjusting start and end positions accordingly.\r
-   * \r
-   * @param i\r
-   *          first column in range to delete\r
-   * @param j\r
-   *          last column in range to delete\r
-   */\r
-  public void deleteChars(int i, int j);\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   * \r
-   * @param i\r
-   *          DOCUMENT ME!\r
-   * @param c\r
-   *          DOCUMENT ME!\r
-   */\r
-  public void insertCharAt(int i, char c);\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   * \r
-   * @param i\r
-   *          DOCUMENT ME!\r
-   * @param c\r
-   *          DOCUMENT ME!\r
-   */\r
-  public void insertCharAt(int i, int length, char c);\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   * \r
-   * @return DOCUMENT ME!\r
-   */\r
-  public SequenceFeature[] getSequenceFeatures();\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   * \r
-   * @param v\r
-   *          DOCUMENT ME!\r
-   */\r
-  public void setSequenceFeatures(SequenceFeature[] features);\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   * \r
-   * @param id\r
-   *          DOCUMENT ME!\r
-   */\r
-  public void setPDBId(Vector ids);\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   * \r
-   * @return DOCUMENT ME!\r
-   */\r
-  public Vector getPDBId();\r
-\r
-  /**\r
-   * add entry to the vector of PDBIds, if it isn't in the list already\r
-   * \r
-   * @param entry\r
-   */\r
-  public void addPDBId(PDBEntry entry);\r
-\r
-  /**\r
-   * update the list of PDBEntrys to include any DBRefEntrys citing structural\r
-   * databases\r
-   * \r
-   * @return true if PDBEntry list was modified\r
-   */\r
-  public boolean updatePDBIds();\r
-\r
-  public String getVamsasId();\r
-\r
-  public void setVamsasId(String id);\r
-\r
-  public void setDBRef(DBRefEntry[] dbs);\r
-\r
-  public DBRefEntry[] getDBRef();\r
-\r
-  /**\r
-   * add the given entry to the list of DBRefs for this sequence, or replace a\r
-   * similar one if entry contains a map object and the existing one doesnt.\r
-   * \r
-   * @param entry\r
-   */\r
-  public void addDBRef(DBRefEntry entry);\r
-\r
-  public void addSequenceFeature(SequenceFeature sf);\r
-\r
-  public void deleteFeature(SequenceFeature sf);\r
-\r
-  public void setDatasetSequence(SequenceI seq);\r
-\r
-  public SequenceI getDatasetSequence();\r
-\r
-  public AlignmentAnnotation[] getAnnotation();\r
-\r
-  public void addAlignmentAnnotation(AlignmentAnnotation annotation);\r
-\r
-  public void removeAlignmentAnnotation(AlignmentAnnotation annotation);\r
-\r
-  /**\r
-   * Derive a sequence (using this one's dataset or as the dataset)\r
-   * \r
-   * @return duplicate sequence with valid dataset sequence\r
-   */\r
-  public SequenceI deriveSequence();\r
-\r
-  /**\r
-   * set the array of associated AlignmentAnnotation for this sequenceI\r
-   * \r
-   * @param revealed\r
-   */\r
-  public void setAlignmentAnnotation(AlignmentAnnotation[] annotation);\r
-\r
-  /**\r
-   * Get one or more alignment annotations with a particular label.\r
-   * \r
-   * @param label\r
-   *          string which each returned annotation must have as a label.\r
-   * @return null or array of annotations.\r
-   */\r
-  public AlignmentAnnotation[] getAnnotation(String label);\r
-\r
-  /**\r
-   * Return a list of any annotations which match the given calcId (source) and\r
-   * label (type). Null values do not match.\r
-   * \r
-   * @param calcId\r
-   * @param label\r
-   * @return\r
-   */\r
-  public List<AlignmentAnnotation> getAlignmentAnnotations(String calcId,\r
-          String label);\r
-\r
-  /**\r
-   * create a new dataset sequence (if necessary) for this sequence and sets\r
-   * this sequence to refer to it. This call will move any features or\r
-   * references on the sequence onto the dataset. It will also make a duplicate\r
-   * of existing annotation rows for the dataset sequence, rather than relocate\r
-   * them in order to preserve external references (since 2.8.2).\r
-   * \r
-   * @return dataset sequence for this sequence\r
-   */\r
-  public SequenceI createDatasetSequence();\r
-\r
-  /**\r
-   * Transfer any database references or annotation from entry under a sequence\r
-   * mapping. <br/>\r
-   * <strong>Note: DOES NOT transfer sequence associated alignment\r
-   * annotation </strong><br/>\r
-   * \r
-   * @param entry\r
-   * @param mp\r
-   *          null or mapping from entry's numbering to local start/end\r
-   */\r
-  public void transferAnnotation(SequenceI entry, Mapping mp);\r
-\r
-  /**\r
-   * @param index\r
-   *          The sequence index in the MSA\r
-   */\r
-  public void setIndex(int index);\r
-\r
-  /**\r
-   * @return The index of the sequence in the alignment\r
-   */\r
-  public int getIndex();\r
-\r
-  /**\r
-   * @return The RNA of the sequence in the alignment\r
-   */\r
-\r
-  public RNA getRNA();\r
-\r
-  /**\r
-   * @param rna\r
-   *          The RNA.\r
-   */\r
-  public void setRNA(RNA rna);\r
-\r
-}\r
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Copyright (C) 2014 The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview 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 General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+package jalview.datamodel;
+
+import java.util.List;
+import java.util.Vector;
+
+import fr.orsay.lri.varna.models.rna.RNA;
+
+/**
+ * DOCUMENT ME!
+ * 
+ * @author $author$
+ * @version $Revision$
+ */
+public interface SequenceI
+{
+  /**
+   * Set the display name for the sequence
+   * 
+   * @param name
+   */
+  public void setName(String name);
+
+  /**
+   * Get the display name
+   */
+  public String getName();
+
+  /**
+   * Set start position of first non-gapped symbol in sequence
+   * 
+   * @param start
+   *          new start position
+   */
+  public void setStart(int start);
+
+  /**
+   * get start position of first non-gapped residue in sequence
+   * 
+   * @return
+   */
+  public int getStart();
+
+  /**
+   * get the displayed id of the sequence
+   * 
+   * @return true means the id will be returned in the form
+   *         DisplayName/Start-End
+   */
+  public String getDisplayId(boolean jvsuffix);
+
+  /**
+   * set end position for last residue in sequence
+   * 
+   * @param end
+   */
+  public void setEnd(int end);
+
+  /**
+   * get end position for last residue in sequence getEnd()>getStart() unless
+   * sequence only consists of gap characters
+   * 
+   * @return
+   */
+  public int getEnd();
+
+  /**
+   * @return length of sequence including gaps
+   * 
+   */
+  public int getLength();
+
+  /**
+   * Replace the sequence with the given string
+   * 
+   * @param sequence
+   *          new sequence string
+   */
+  public void setSequence(String sequence);
+
+  /**
+   * @return sequence as string
+   */
+  public String getSequenceAsString();
+
+  /**
+   * get a range on the sequence as a string
+   * 
+   * @param start
+   *          position relative to start of sequence including gaps (from 0)
+   * @param end
+   *          position relative to start of sequence including gaps (from 0)
+   * 
+   * @return String containing all gap and symbols in specified range
+   */
+  public String getSequenceAsString(int start, int end);
+
+  /**
+   * Get the sequence as a character array
+   * 
+   * @return seqeunce and any gaps
+   */
+  public char[] getSequence();
+
+  /**
+   * get stretch of sequence characters in an array
+   * 
+   * @param start
+   *          absolute index into getSequence()
+   * @param end
+   *          exclusive index of last position in segment to be returned.
+   * 
+   * @return char[max(0,end-start)];
+   */
+  public char[] getSequence(int start, int end);
+
+  /**
+   * create a new sequence object from start to end of this sequence
+   * 
+   * @param start
+   *          int
+   * @param end
+   *          int
+   * @return SequenceI
+   */
+  public SequenceI getSubSequence(int start, int end);
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @param i
+   *          DOCUMENT ME!
+   * 
+   * @return DOCUMENT ME!
+   */
+  public char getCharAt(int i);
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @param desc
+   *          DOCUMENT ME!
+   */
+  public void setDescription(String desc);
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @return DOCUMENT ME!
+   */
+  public String getDescription();
+
+  /**
+   * Return the alignment column for a sequence position * Return the alignment
+   * position for a sequence position
+   * 
+   * @param pos
+   *          lying from start to end
+   * 
+   * @return aligned column for residue (0 if residue is upstream from
+   *         alignment, -1 if residue is downstream from alignment) note.
+   *         Sequence object returns sequence.getEnd() for positions upstream
+   *         currently. TODO: change sequence for
+   *         assert(findIndex(seq.getEnd()+1)==-1) and fix incremental bugs
+   * 
+   */
+  public int findIndex(int pos);
+
+  /**
+   * Returns the sequence position for an alignment position
+   * 
+   * @param i
+   *          column index in alignment (from 1)
+   * 
+   * @return residue number for residue (left of and) nearest ith column
+   */
+  public int findPosition(int i);
+
+  /**
+   * Returns an int array where indices correspond to each residue in the
+   * sequence and the element value gives its position in the alignment
+   * 
+   * @return int[SequenceI.getEnd()-SequenceI.getStart()+1] or null if no
+   *         residues in SequenceI object
+   */
+  public int[] gapMap();
+
+  /**
+   * Returns an int array where indices correspond to each position in sequence
+   * char array and the element value gives the result of findPosition for that
+   * index in the sequence.
+   * 
+   * @return int[SequenceI.getLength()]
+   */
+  public int[] findPositionMap();
+
+  /**
+   * Delete a range of aligned sequence columns, creating a new dataset sequence
+   * if necessary and adjusting start and end positions accordingly.
+   * 
+   * @param i
+   *          first column in range to delete
+   * @param j
+   *          last column in range to delete
+   */
+  public void deleteChars(int i, int j);
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @param i
+   *          DOCUMENT ME!
+   * @param c
+   *          DOCUMENT ME!
+   */
+  public void insertCharAt(int i, char c);
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @param i
+   *          DOCUMENT ME!
+   * @param c
+   *          DOCUMENT ME!
+   */
+  public void insertCharAt(int i, int length, char c);
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @return DOCUMENT ME!
+   */
+  public SequenceFeature[] getSequenceFeatures();
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @param v
+   *          DOCUMENT ME!
+   */
+  public void setSequenceFeatures(SequenceFeature[] features);
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @param id
+   *          DOCUMENT ME!
+   */
+  public void setPDBId(Vector ids);
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @return DOCUMENT ME!
+   */
+  public Vector getPDBId();
+
+  /**
+   * add entry to the vector of PDBIds, if it isn't in the list already
+   * 
+   * @param entry
+   */
+  public void addPDBId(PDBEntry entry);
+
+  /**
+   * update the list of PDBEntrys to include any DBRefEntrys citing structural
+   * databases
+   * 
+   * @return true if PDBEntry list was modified
+   */
+  public boolean updatePDBIds();
+
+  public String getVamsasId();
+
+  public void setVamsasId(String id);
+
+  public void setDBRef(DBRefEntry[] dbs);
+
+  public DBRefEntry[] getDBRef();
+
+  /**
+   * add the given entry to the list of DBRefs for this sequence, or replace a
+   * similar one if entry contains a map object and the existing one doesnt.
+   * 
+   * @param entry
+   */
+  public void addDBRef(DBRefEntry entry);
+
+  public void addSequenceFeature(SequenceFeature sf);
+
+  public void deleteFeature(SequenceFeature sf);
+
+  public void setDatasetSequence(SequenceI seq);
+
+  public SequenceI getDatasetSequence();
+
+  public AlignmentAnnotation[] getAnnotation();
+
+  public void addAlignmentAnnotation(AlignmentAnnotation annotation);
+
+  public void removeAlignmentAnnotation(AlignmentAnnotation annotation);
+
+  /**
+   * Derive a sequence (using this one's dataset or as the dataset)
+   * 
+   * @return duplicate sequence with valid dataset sequence
+   */
+  public SequenceI deriveSequence();
+
+  /**
+   * set the array of associated AlignmentAnnotation for this sequenceI
+   * 
+   * @param revealed
+   */
+  public void setAlignmentAnnotation(AlignmentAnnotation[] annotation);
+
+  /**
+   * Get one or more alignment annotations with a particular label.
+   * 
+   * @param label
+   *          string which each returned annotation must have as a label.
+   * @return null or array of annotations.
+   */
+  public AlignmentAnnotation[] getAnnotation(String label);
+
+  /**
+   * Return a list of any annotations which match the given calcId (source) and
+   * label (type). Null values do not match.
+   * 
+   * @param calcId
+   * @param label
+   * @return
+   */
+  public List<AlignmentAnnotation> getAlignmentAnnotations(String calcId,
+          String label);
+
+  /**
+   * create a new dataset sequence (if necessary) for this sequence and sets
+   * this sequence to refer to it. This call will move any features or
+   * references on the sequence onto the dataset. It will also make a duplicate
+   * of existing annotation rows for the dataset sequence, rather than relocate
+   * them in order to preserve external references (since 2.8.2).
+   * 
+   * @return dataset sequence for this sequence
+   */
+  public SequenceI createDatasetSequence();
+
+  /**
+   * Transfer any database references or annotation from entry under a sequence
+   * mapping. <br/>
+   * <strong>Note: DOES NOT transfer sequence associated alignment
+   * annotation </strong><br/>
+   * 
+   * @param entry
+   * @param mp
+   *          null or mapping from entry's numbering to local start/end
+   */
+  public void transferAnnotation(SequenceI entry, Mapping mp);
+
+  /**
+   * @param index
+   *          The sequence index in the MSA
+   */
+  public void setIndex(int index);
+
+  /**
+   * @return The index of the sequence in the alignment
+   */
+  public int getIndex();
+
+  /**
+   * @return The RNA of the sequence in the alignment
+   */
+
+  public RNA getRNA();
+
+  /**
+   * @param rna
+   *          The RNA.
+   */
+  public void setRNA(RNA rna);
+
+}
index 6f0bf26..775adf7 100644 (file)
@@ -1,60 +1,60 @@
-/*\r
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)\r
- * Copyright (C) 2014 The Jalview Authors\r
- * \r
- * This file is part of Jalview.\r
- * \r
- * Jalview is free software: you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License \r
- * as published by the Free Software Foundation, either version 3\r
- * of the License, or (at your option) any later version.\r
- *  \r
- * Jalview is distributed in the hope that it will be useful, but \r
- * WITHOUT ANY WARRANTY; without even the implied warranty \r
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR \r
- * PURPOSE.  See the GNU General Public License for more details.\r
- * \r
- * You should have received a copy of the GNU General Public License\r
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.\r
- * The Jalview Authors are detailed in the 'AUTHORS' file.\r
- */\r
-package jalview.ws;\r
-\r
-import static org.junit.Assert.*;\r
-import jalview.datamodel.AlignmentI;\r
-import jalview.datamodel.SequenceI;\r
-import jalview.ws.seqfetcher.DbSourceProxy;\r
-\r
-import java.util.List;\r
-\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-public class PDBSequenceFetcherTest\r
-{\r
-\r
-  SequenceFetcher sf;\r
-\r
-  @Before\r
-  public void setUp() throws Exception\r
-  {\r
-    sf = new SequenceFetcher(false);\r
-  }\r
-\r
-  @Test\r
-  public void testRnaSeqRetrieve() throws Exception\r
-  {\r
-    List<DbSourceProxy> sps = sf.getSourceProxy("PDB");\r
-    AlignmentI response = sps.get(0).getSequenceRecords("2GIS");\r
-    assertTrue(response != null);\r
-    assertTrue(response.getHeight() == 1);\r
-    for (SequenceI sq : response.getSequences())\r
-    {\r
-      assertTrue("No annotation transfered to sequence.",\r
-              sq.getAnnotation().length > 0);\r
-      assertTrue("No PDBEntry on sequence.", sq.getPDBId().size() > 0);\r
-      assertTrue("No RNA annotation on sequence.", sq.getRNA() != null);\r
-    }\r
-  }\r
-\r
-}\r
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Copyright (C) 2014 The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview 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 General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+package jalview.ws;
+
+import static org.junit.Assert.*;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceI;
+import jalview.ws.seqfetcher.DbSourceProxy;
+
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class PDBSequenceFetcherTest
+{
+
+  SequenceFetcher sf;
+
+  @Before
+  public void setUp() throws Exception
+  {
+    sf = new SequenceFetcher(false);
+  }
+
+  @Test
+  public void testRnaSeqRetrieve() throws Exception
+  {
+    List<DbSourceProxy> sps = sf.getSourceProxy("PDB");
+    AlignmentI response = sps.get(0).getSequenceRecords("2GIS");
+    assertTrue(response != null);
+    assertTrue(response.getHeight() == 1);
+    for (SequenceI sq : response.getSequences())
+    {
+      assertTrue("No annotation transfered to sequence.",
+              sq.getAnnotation().length > 0);
+      assertTrue("No PDBEntry on sequence.", sq.getPDBId().size() > 0);
+      assertTrue("No RNA annotation on sequence.", sq.getRNA() != null);
+    }
+  }
+
+}
index d9858e3..823caeb 100644 (file)
@@ -1,2 +1,2 @@
-help2Website.class\r
-getJavaVersion.class\r
+help2Website.class
+getJavaVersion.class
index 65e6644..76ff05b 100644 (file)
 # You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
 # The Jalview Authors are detailed in the 'AUTHORS' file.
 ##
\r
-# Splits a concatenated set of Stockholm Files into several individual files.\r
-\r
-use strict;\r
-use FileHandle;\r
-my $ac;\r
-my $lns="";\r
-my $fh;\r
-while (<>) {\r
-    if ($_=~m!^//!) {\r
-       $fh->print("//\n");\r
-       $fh->close();\r
-       $ac = undef;\r
-       $lns = "";\r
-    } else {\r
-       if ($_=~/GF\s+AC\s+([0-9.RPF]+)/) { \r
-           $ac=$1; \r
-           ($fh=new FileHandle)->open(">$ac.stk") or die("Couldn't open file '$ac.stk'"); \r
-           $lns=~/^. STOCKHOLM 1.0/ or $fh->print("# STOCKHOLM 1.0\n");\r
-       };\r
-       if (defined($fh)) {\r
-           if (defined $lns) { \r
-               $fh->print($lns); $lns=undef; }\r
-           \r
-           $fh->print($_);\r
-       } else {\r
-           $lns .= $_;\r
-       }\r
-    }\r
-}\r
+# Splits a concatenated set of Stockholm Files into several individual files.
+
+use strict;
+use FileHandle;
+my $ac;
+my $lns="";
+my $fh;
+while (<>) {
+    if ($_=~m!^//!) {
+       $fh->print("//\n");
+       $fh->close();
+       $ac = undef;
+       $lns = "";
+    } else {
+       if ($_=~/GF\s+AC\s+([0-9.RPF]+)/) { 
+           $ac=$1; 
+           ($fh=new FileHandle)->open(">$ac.stk") or die("Couldn't open file '$ac.stk'"); 
+           $lns=~/^. STOCKHOLM 1.0/ or $fh->print("# STOCKHOLM 1.0\n");
+       };
+       if (defined($fh)) {
+           if (defined $lns) { 
+               $fh->print($lns); $lns=undef; }
+           
+           $fh->print($_);
+       } else {
+           $lns .= $_;
+       }
+    }
+}