This is a technical document about PE's construction -- you do not need to read it to use PE! It is provided for those who may be interested in adapting some downloaded PE javascript to their own applications.
Abbreviations used in this document: IE Microsoft's Internet Explorer browser; JS javascript/JScript; NS Netscape's browser; PE Protein Explorer;
PE could not have been developed as quickly as it has been, in a few years by one person with a day job, unless it was built upon MDL Chime. MDL Chime contains a great deal of power, and PE attempts to make that power accessible to a wide audience, as well as to extend it with new routines plus a knowledge base. The power derives largely from that built into RasMol by Roger Sayle. Roger's code for rendering and command processing was adapted for Chime by Tim Maffett at MDL. Tim also added a lot of power, and was kind enough to implement numerous suggestions of mine in Chime, which enabled me to build many Chime resources later. Bryan van Vliet Jean Holt, and Franklin Adler also made substantial contributions to Chime 2.
Chime was implemented by Tim Maffett as a Netscape plugin at a time when Netscape was by far the most popular browser (1995-1998 or so). Later, IE became more popular than NS due to Microsoft's aggressive and monopolistic marketing tactics (bundling IE with the operating system, and integrating it into the operating system, and making it impossible to uninstall). MDL has made continuing efforts to enable Chime to work to some degree, with no help from Microsoft, which never implemented the LiveConnect method for communicating with plugins. In summer, 2001, Microsoft suddenly and unexpectedly announced that IE 5.5 SP2 would no longer have support for "Netscape plugins". Amazingly, MDL managed to release Chime 2.6 SP3 by October 2001, able to work in the crippled IE version.
Luckily, before he implemented the LiveConnect function executeScript() in Chime, Tim Maffett had implemented a "temporary kludge", namely an "immediate mode" Chime button that could be written into an invisible frame and would execute automatically without being clicked (see downloadable example). This enabled a JS string variable containing a command script to be passed to Chime. Luckily, because this is the only method that works in IE, and thankfully, because MDL never removed this "kludge" from later versions of Chime.
Jean-Philippe Demers, then a high school student in Montreal, had been arguing persuasively for about a year that it should be possible to get PE to work in IE. In spring, 2001, I decided not to try it because I was worried about the time it would take, and that either it would not work, or would be unstable and crash too often. In summer, 2001, Paul Pillot, a secondary school teacher in France, sent me a version of PE that demonstrated the feasability of working in IE. It worked smoothly and did not crash! (Paul spent many weeks of his spare time on this, on a volunteer basis!) So I was convinced that it would be possible, but then Microsoft made its surprise announcement (see above). Finally after MDL released Chime 2.6 SP3, I began a serious effort to release PE able to work in IE in late November, 2001, using Pillot's code as a start.
At the time of this writing, MDL does not support MacPPC IE in Chime. Therefore PE can work in IE on Windows, but not Macintosh.
PE refuses to start if the browser will not support it, in which case the goal is that it should behave gracefully, e.g. explain clearly what the problem is and offer solutions. Also, each refusal page offers a bypass link for use in case PE's browser tests are not working correctly. This could easily happen with new versions of browsers or Chime, or in tests on nonstandard platforms such as x86 linux. The following browser compatibility tests are performed in the following order by pe.htm (see browser_ok()). Except for the first, these can be bypassed by adding the query parameter "nbc=1" (No Browser Check), e.g. "pe.htm?nbc=1&".
If all tests are passed at this point, the platform and browser and browser version are compatible, and the browser has javascript, java, and cookies enabled.
Chime Testing