| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 | 
							- /* Adapted from Clamato by Avi Bryant. http://www.clamato.net */
 
- (function() {
 
-   var
 
-     scripts = document.getElementsByTagName("script"),
 
-     src = scripts[ scripts.length - 1 ].src,
 
-     home = src.split("/").slice(0, -2).join("/") + "/";
 
-   window.Amber = {
 
-     debug: false,
 
-     deploy: false,
 
-     nocache: '?' + (new Date()).getTime(),
 
-     home: home,
 
-     /*
 
-      example:
 
-      Amber.load({
 
-        files: ['MyCategory1.js', 'MyCategory2.js'],
 
-        ready: function() {smalltalk.Browser._open()}
 
-      })
 
-     */
 
-     load: function(spec) {
 
-       var self = this;
 
-       self.localStorageSource = [];
 
-       self.spec = ((typeof spec == 'undefined') ? {} : spec);
 
-       // In deployment mode, only the compressed version of Kernel
 
-       // and Canvas are loaded
 
-       self.deploy = self.spec.deploy || self.deploy;
 
-       self.debug = self.spec.debug || self.debug;
 
-       // Specify a version string to avoid wrong browser caching
 
-       if (self.spec.version)
 
-         self.nocache = '?' + self.spec.version;
 
-       self.loadDependencies();
 
-       self.loadJS('boot.js');
 
-       self.populateLocalPackages();
 
-       if (self.deploy) {
 
-         self.loadPackages([
 
-           'Kernel.deploy',
 
-           'Canvas.deploy'
 
-         ]);
 
-       } else {
 
-         self.loadIDEDependencies();
 
-         self.loadCSS('amber.css');
 
-         self.loadPackages([
 
-           'Kernel',
 
-           'Canvas',
 
-           'Compiler',
 
-           'parser',
 
-           'IDE',
 
-           'SUnit',
 
-           'Examples',
 
-           'Benchfib',
 
-           'Kernel-Tests',
 
-         ]);
 
-       }
 
-       var additionalFiles = self.spec.packages || self.spec.files;
 
-       if (additionalFiles)
 
-         self.loadPackages(additionalFiles, self.spec.prefix);
 
-       // Always load all local packages
 
-       for (name in self.localPackages) {
 
-         self.log('Local package:  ' + name);
 
-         self.localStorageSource.push(self.localPackages[name]);
 
-       }
 
-       // Be sure to setup & initialize smalltalk classes
 
-       self.loadJS('init.js');
 
-     },
 
-     loadPackages: function(names, prefix){
 
-       var self = this;
 
-       var name, url;
 
-       var prefix = prefix || 'js';
 
-       for (var i=0; i < names.length; i++) {
 
-         name = names[i].split(/\.js$/)[0];
 
-         // Only load package from the server if it isn't stored in
 
-         // localStorage
 
-         if (!(name in self.localPackages)) {
 
-           self.log('Server package: ' + name);
 
-           self.loadJS(name + '.js', prefix);
 
-         }
 
-       }
 
-     },
 
-     loadJS: function(name, prefix) {
 
-       var self = this;
 
-       var prefix = prefix || 'js';
 
-       var name = name;
 
-       if (!self.deploy)
 
-         name = name + self.nocache;
 
-       var url = self.home + prefix + '/' + name;
 
-       var scriptString = '<script src="' + url + '" type="text/javascript"></script>';
 
-       document.write(scriptString);
 
-     },
 
-     loadCSS: function (name, prefix) {
 
-       var self = this;
 
-       var prefix = prefix || 'css';
 
-       var name = name;
 
-       if (!self.deploy)
 
-         name = name + self.nocache;
 
-       var url = self.home + prefix + '/' + name;
 
-       var link = document.createElement("link");
 
-       link.setAttribute("rel", "stylesheet");
 
-       link.setAttribute("type", "text/css");
 
-       link.setAttribute("href", url);
 
-       document.getElementsByTagName("head")[0].appendChild(link);
 
-     },
 
-     loadDependencies: function() {
 
-       var self = this;
 
-       self.loadJS('lib/jQuery/jquery-1.6.4.min.js');
 
-       self.loadJS('lib/jQuery/jquery-ui-1.8.9.custom.min.js');
 
-     },
 
-     loadIDEDependencies: function() {
 
-       var self = this;
 
-       self.loadJS('lib/jQuery/jquery.textarea.js');
 
-       self.loadJS('lib/CodeMirror/lib/codemirror.js');
 
-       self.loadCSS('lib/CodeMirror/lib/codemirror.css', 'js');
 
-       self.loadJS('lib/CodeMirror/mode/smalltalk/smalltalk.js');
 
-       self.loadCSS('lib/CodeMirror/theme/amber.css', 'js');
 
-     },
 
-     // This will be called after JS files have been loaded
 
-     initializeSmalltalk: function(){
 
-       var self = this;
 
-       for (var i=0; i < self.localStorageSource.length; i++)
 
-         eval(self.localStorageSource[i]);
 
-       smalltalk.init(smalltalk.Object);
 
-       smalltalk.classes()._do_(function(each) {each._initialize()});
 
-       if (self.spec.ready)
 
-         self.spec.ready();
 
-       if (self.deploy)
 
-         smalltalk.setDeploymentMode();
 
-     },
 
-     populateLocalPackages: function(){
 
-       var self = this;
 
-       var localStorageRE = /^smalltalk\.packages\.(.*)$/;
 
-       self.localPackages = {};
 
-       var match, key;
 
-       for(var i=0; i < localStorage.length; i++) {
 
-         key = localStorage.key(i);
 
-         if (match = key.match(localStorageRE)) {
 
-           self.localPackages[match[1]] = localStorage[key];
 
-         }
 
-       }
 
-       return self.localPackages;
 
-     },
 
-     clearLocalPackages: function(){
 
-       var self = this;
 
-       for (var name in self.localPackages) {
 
-         self.log('Removing ' + name + ' from local storage');
 
-         localStorage.removeItem('smalltalk.packages.' + name);
 
-       }
 
-     },
 
-     log: function(string) {
 
-       var self = this;
 
-       if (self.debug)
 
-         console.log(string);
 
-     }
 
-   };
 
-   window.loadAmber = function(spec) {
 
-     Amber.load(spec);
 
-   }
 
- })();
 
 
  |