| 
					
				 | 
			
			
				@@ -19,7 +19,7 @@ amber = (function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var spec; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var jsToLoad = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var loadJS; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    var nocache = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var nocache = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	that.toggleIDE = function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if ($('#amber').length == 0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -56,9 +56,9 @@ amber = (function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		loadDependencies(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		addJSToLoad('lib/es5-shim-2.0.2/es5-shim.min.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		addJSToLoad('lib/es5-shim-2.0.2/es5-sham.min.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		addJSToLoad('boot.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		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([ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -102,41 +102,69 @@ amber = (function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		var additionalFiles = spec.packages || spec.files; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var commitPathForInit = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var commitPathForInit = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (additionalFiles) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			commitPathForInit = loadPackages(additionalFiles, spec.prefix, spec.packageHome); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// Be sure to setup & initialize smalltalk classes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		addJSToLoad('init.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		addJSToLoad('js/init.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		initializeSmalltalk(commitPathForInit); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	function loadPackages(names, prefix, urlHome){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		var name, url; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		var prefix = prefix || 'js'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    var urlHome = urlHome || home; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var 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+'st' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			js: urlHome+prefix, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			st: urlHome+'st' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	function addJSToLoad(name, prefix, urlHome) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    var urlHome = urlHome || home; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var 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) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		var prefix = prefix || 'js'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var prefix = prefix || ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		var name = name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    var urlHome = urlHome || home; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var urlHome = urlHome || home; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var parts = name.match(/^(.*\/)([^/]*)$/); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (parts) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			name = parts[2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			urlHome = resolve(urlHome, parts[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (!deploy) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			name = name + nocache; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -163,18 +191,18 @@ amber = (function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	function loadDependencies() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (typeof jQuery == 'undefined') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			writeScriptTag(buildJSURL('lib/jQuery/jquery-1.8.2.min.js')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			writeScriptTag(buildJSURL('js/lib/jQuery/jquery-1.8.2.min.js')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if ((typeof jQuery == 'undefined') || (typeof jQuery.ui == 'undefined')) {       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			writeScriptTag(buildJSURL('lib/jQuery/jquery-ui-1.8.16.custom.min.js')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			writeScriptTag(buildJSURL('js/lib/jQuery/jquery-ui-1.8.16.custom.min.js')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	function loadIDEDependencies() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		addJSToLoad('lib/jQuery/jquery.textarea.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		addJSToLoad('lib/CodeMirror/codemirror.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		addJSToLoad('lib/CodeMirror/smalltalk.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		addJSToLoad('js/lib/jQuery/jquery.textarea.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		addJSToLoad('js/lib/CodeMirror/codemirror.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		addJSToLoad('js/lib/CodeMirror/smalltalk.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		loadCSS('lib/CodeMirror/codemirror.css', 'js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		loadCSS('lib/CodeMirror/amber.css', 'js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -182,14 +210,14 @@ amber = (function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// This will be called after JS files have been loaded 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	function initializeSmalltalk(commitPath) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		window.smalltalkReady = function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (commitPath) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                smalltalk['@@commitPath'] = commitPath; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                smalltalk.Package._commitPathsFromLoader(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (commitPath) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				smalltalk['@@commitPath'] = commitPath; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				smalltalk.Package._commitPathsFromLoader(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if (spec.ready) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				spec.ready(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            evaluateSmalltalkScripts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			evaluateSmalltalkScripts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		loadAllJS();  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -236,16 +264,16 @@ amber = (function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		document.write(scriptString); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    function evaluateSmalltalkScripts() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        jQuery(document).ready(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            jQuery('script[type="text/smalltalk"]').each(function(i, elt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                smalltalk.send( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    smalltalk.send(smalltalk.Compiler, '_new'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    '_evaluateExpression_', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    [jQuery(elt).html()]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	function evaluateSmalltalkScripts() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		jQuery(document).ready(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			jQuery('script[type="text/smalltalk"]').each(function(i, elt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				smalltalk.send( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					smalltalk.send(smalltalk.Compiler, '_new'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					'_evaluateExpression_', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					[jQuery(elt).html()]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	function populateLocalPackages(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		var localStorageRE = /^smalltalk\.packages\.(.*)$/; 
			 |