| 
					
				 | 
			
			
				@@ -1,348 +0,0 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/* Amber package loading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   usage example: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   amber.load({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   files: ['MyCategory1.js', 'MyCategory2.js'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   ready: function() {smalltalk.Browser._open()} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-amber = (function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var that = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var scripts = document.getElementsByTagName("script"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var src     = scripts[ scripts.length - 1 ].src; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var home    = resolveViaDOM(src).replace(/[^\/]+\/[^\/]+$/, ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var debug; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var deploy; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var spec; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var jsToLoad = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var loadJS; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var nocache = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function resolveViaDOM(url) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		var a = document.createElement("a"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		a.href = url; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return a.href; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	that.load = function(obj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		spec = obj || {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// In deployment mode, only the compressed version of Kernel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// and Canvas are loaded 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		deploy = spec.deploy || false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		debug = spec.debug || false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// When debug is turned on, logs are written to the console, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// and the user will be prompted before they leave the page. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (debug) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			window.onbeforeunload = function(){ return 'You will loose all code that you have not committed'; }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// Allow loading default Amber files from a different location 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// e.g. http://amber-lang.net/amber/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (spec.home) home = spec.home; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// Specify a version string to avoid wrong browser caching 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (spec.version) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			nocache = '?' + spec.version; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		loadDependencies(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		addJSToLoad('js/lib/es5-shim-2.0.2/es5-shim.min.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		addJSToLoad('js/lib/es5-shim-2.0.2/es5-sham.min.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		addJSToLoad('js/boot.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (deploy) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			loadPackages([ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Kernel-Objects.deploy', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Kernel-Classes.deploy', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Kernel-Methods.deploy', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Kernel-Collections.deploy', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Kernel-Exceptions.deploy', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Kernel-Transcript.deploy', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Kernel-Announcements.deploy', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Canvas.deploy' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			loadIDEDependencies(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			loadCSS('amber.css'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			loadPackages([ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Kernel-Objects', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Kernel-Classes', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Kernel-Methods', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Kernel-Collections', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Kernel-Exceptions', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Kernel-Transcript', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Kernel-Announcements', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Canvas', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'SUnit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Importer-Exporter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Compiler-Exceptions', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Compiler-Core', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Compiler-AST', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Compiler-Semantic', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Compiler-IR', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Compiler-Inlining', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Compiler-Tests', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'parser', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'IDE', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Examples', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Benchfib', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'Kernel-Tests', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'SUnit-Tests' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		var additionalFiles = spec.packages || spec.files; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (additionalFiles) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			that.commitPath = loadPackages(additionalFiles, spec.prefix, spec.packageHome); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// Be sure to setup & initialize smalltalk classes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		addJSToLoad('js/init.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		initializeSmalltalk(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function loadPackages(names, prefix, urlHome){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		var name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		prefix = prefix || 'js'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		urlHome = urlHome || home; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		for (var i=0; i < names.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			name = names[i].split(/\.js$/)[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			addJSToLoad(name + '.js', prefix, urlHome); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			js: urlHome + prefix, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			st: urlHome + (prefix.match(/\/js$/) ? prefix.replace(/\/js$/, "/st") : "st") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function addJSToLoad(name, prefix, urlHome) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		urlHome = urlHome || home; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		jsToLoad.push(buildJSURL(name, prefix, urlHome)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function resolve(base, path) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (/(^|:)\/\//.test(path)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// path: [http:]//foo.com/bar/; base: whatever/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// -> http://foo.com/bar/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return path; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (!/^\//.test(path)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// path: relative/; base: whatever/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// -> whatever/relative/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return base + path; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		var match = base.match(/^(([^:/]*:|^)\/\/[^/]*)/); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (match) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// path: /absolute/; base: [http:]//foo.com/whatever/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// -> [http:]//foo.com/absolute/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return match[1] + path; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// path: /absolute/; base: whatever/path/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// -> /absolute/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return path; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function buildJSURL(name, prefix, urlHome) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		prefix = prefix ? prefix + '/' : ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		urlHome = urlHome || home; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		var parts = name.match(/^(.*\/)([^/]*)$/); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (parts) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			name = parts[2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			urlHome = resolve(urlHome, parts[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (!deploy) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			name = name + nocache; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return urlHome + prefix + name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function loadCSS(name, prefix) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		prefix = prefix || 'css'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (!deploy) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			name = name + nocache; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		var url = 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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function loadDependencies() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (typeof jQuery == 'undefined') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			addJSToLoad('js/lib/jQuery/jquery-1.8.2.min.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if ((typeof jQuery == 'undefined') || (typeof jQuery.ui == 'undefined')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			addJSToLoad('js/lib/jQuery/jquery-ui-1.8.16.custom.min.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function loadIDEDependencies() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		addJSToLoad('js/lib/jQuery/jquery.textarea.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		addJSToLoad('js/lib/CodeMirror/codemirror.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		addJSToLoad('js/lib/CodeMirror/smalltalk.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		addJSToLoad('js/lib/CodeMirror/addon/hint/show-hint.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		loadCSS('lib/CodeMirror/codemirror.css', 'js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		loadCSS('lib/CodeMirror/theme/ambiance.css', 'js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		loadCSS('lib/CodeMirror/addon/hint/show-hint.css', 'js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		loadCSS('lib/CodeMirror/amber.css', 'js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	// This will be called after JS files have been loaded 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function initializeSmalltalk() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		that.smalltalkReady = function(smalltalk,nil,_st) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if (spec.ready) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				spec.ready(smalltalk,nil,_st); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			evaluateSmalltalkScripts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		loadAllJS(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * When loaded using AJAX, scripts order not guaranteed. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * Load JS in the order they have been added using addJSToLoad(). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * If loaded, will use jQuery's getScript instead of adding a script element 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function loadAllJS() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		loadJS = loadJSViaScriptTag; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (typeof jQuery != 'undefined') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			loadJS = loadJSViaJQuery; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		loadNextJS(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function loadNextJS() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		loadJS(jsToLoad[0], function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			jsToLoad.shift(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if (jsToLoad.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				loadNextJS(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function loadJSViaScriptTag(url, callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		writeScriptTag(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		callback(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function loadJSViaJQuery(url, callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// The order of loading is as specified, but order of execution may get wrong 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// (observed when loading amber in testing environment using zombiejs). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// jQuery's getScript/get/ajax does not give any guarantee as to the order of execution. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// The callback is called after the file is fully load, but it may not have been executed. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// When given a small timeout between ending previous loading and start of next loading, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// it is very probable that the time window is used to actually start executing the script. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		$.ajax({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			dataType: "script", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			url: url, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			cache: deploy, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			success: function () { setTimeout(callback, 5); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function writeScriptTag(src) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		var scriptString = '<script src="' + src + '" type="text/javascript"></script>'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		document.write(scriptString); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function evaluateSmalltalkScripts() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		jQuery(document).ready(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			jQuery('script[type="text/smalltalk"]').each(function(i, elt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				smalltalk.Compiler._new()._evaluateExpression_(jQuery(elt).html()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var localPackages; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function populateLocalPackages(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		var localStorageRE = /^smalltalk\.packages\.(.*)$/; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		localPackages = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		var match, key; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		for(var i=0; i < localStorage.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			key = localStorage.key(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if (match = key.match(localStorageRE)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				localPackages[match[1]] = localStorage[key]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return localPackages; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function clearLocalPackages() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		for (var name in localPackages) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			log('Removing ' + name + ' from local storage'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			localStorage.removeItem('smalltalk.packages.' + name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function log(string) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (debug) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			console.log(string); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	that.loadHelios = function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		loadCSS('helios_frame.css'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		var frame = jQuery('<div id="helios"><iframe frameborder=0 src="' + home + 'helios.html"></iframe></div>'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		jQuery('body').append(frame); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		jQuery(frame).resizable({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			handles: 'n', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			start: onResizeStart, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			stop: onResizeStop, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			resize: onResize 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		function onResize() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			jQuery('#helios') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.css('top', '') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.css('width', '100%') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.css('bottom', '0px'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		function onResizeStart() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			jQuery('#helios').append('<div class="overlay"></div>'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		function onResizeStop() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			jQuery('#helios').find('.overlay').remove(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	that.popupHelios = function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		window.open(home + 'helios.html', "Helios", "menubar=no, status=no, scrollbars=no, menubar=no, width=1000, height=600"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	return that; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-})(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-window.loadAmber  = amber.load; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-window.loadHelios = amber.loadHelios; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-window.popupHelios = amber.popupHelios; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// Backward compatibility 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function toggleAmberIDE () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	return smalltalk.TabManager._toggleAmberIDE(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 |