|  | @@ -30,7 +30,7 @@ amber = (function() {
 | 
	
		
			
				|  |  |  			smalltalk.TabManager._current()._open();
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		return false;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | +	};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	that.load = function(obj) {
 | 
	
		
			
				|  |  |  		spec = obj || {};
 | 
	
	
		
			
				|  | @@ -98,7 +98,7 @@ amber = (function() {
 | 
	
		
			
				|  |  |  				'Examples',
 | 
	
		
			
				|  |  |  				'Benchfib',
 | 
	
		
			
				|  |  |  				'Kernel-Tests',
 | 
	
		
			
				|  |  | -                'SUnit-Tests'
 | 
	
		
			
				|  |  | +				'SUnit-Tests'
 | 
	
		
			
				|  |  |  			]);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -114,9 +114,9 @@ amber = (function() {
 | 
	
		
			
				|  |  |  	};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function loadPackages(names, prefix, urlHome){
 | 
	
		
			
				|  |  | -		var name, url;
 | 
	
		
			
				|  |  | -		var prefix = prefix || 'js';
 | 
	
		
			
				|  |  | -		var urlHome = urlHome || home;
 | 
	
		
			
				|  |  | +		var name;
 | 
	
		
			
				|  |  | +		prefix = prefix || 'js';
 | 
	
		
			
				|  |  | +		urlHome = urlHome || home;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		for (var i=0; i < names.length; i++) {
 | 
	
		
			
				|  |  |  			name = names[i].split(/\.js$/)[0];
 | 
	
	
		
			
				|  | @@ -127,12 +127,12 @@ amber = (function() {
 | 
	
		
			
				|  |  |  			js: urlHome+prefix,
 | 
	
		
			
				|  |  |  			st: urlHome+'st'
 | 
	
		
			
				|  |  |  		};
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function addJSToLoad(name, prefix, urlHome) {
 | 
	
		
			
				|  |  | -		var urlHome = urlHome || home;
 | 
	
		
			
				|  |  | +		urlHome = urlHome || home;
 | 
	
		
			
				|  |  |  		jsToLoad.push(buildJSURL(name, prefix, urlHome));
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function resolve(base, path) {
 | 
	
		
			
				|  |  |  		if (/(^|:)\/\//.test(path)) {
 | 
	
	
		
			
				|  | @@ -157,9 +157,8 @@ amber = (function() {
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function buildJSURL(name, prefix, urlHome) {
 | 
	
		
			
				|  |  | -		var prefix = prefix || '';
 | 
	
		
			
				|  |  | -		var name = name;
 | 
	
		
			
				|  |  | -		var urlHome = urlHome || home;
 | 
	
		
			
				|  |  | +		prefix = prefix || '';
 | 
	
		
			
				|  |  | +		urlHome = urlHome || home;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		var parts = name.match(/^(.*\/)([^/]*)$/);
 | 
	
		
			
				|  |  |  		if (parts) {
 | 
	
	
		
			
				|  | @@ -172,11 +171,10 @@ amber = (function() {
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		return urlHome + prefix + '/' + name;
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function loadCSS(name, prefix) {
 | 
	
		
			
				|  |  | -		var prefix = prefix || 'css';
 | 
	
		
			
				|  |  | -		var name = name;
 | 
	
		
			
				|  |  | +		prefix = prefix || 'css';
 | 
	
		
			
				|  |  |  		if (!deploy) {
 | 
	
		
			
				|  |  |  			name = name + nocache;
 | 
	
		
			
				|  |  |  		}
 | 
	
	
		
			
				|  | @@ -188,7 +186,7 @@ amber = (function() {
 | 
	
		
			
				|  |  |  		link.setAttribute("type", "text/css");
 | 
	
		
			
				|  |  |  		link.setAttribute("href", url);
 | 
	
		
			
				|  |  |  		document.getElementsByTagName("head")[0].appendChild(link);
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function loadDependencies() {
 | 
	
		
			
				|  |  |  		if (typeof jQuery == 'undefined') {
 | 
	
	
		
			
				|  | @@ -198,7 +196,7 @@ amber = (function() {
 | 
	
		
			
				|  |  |  		if ((typeof jQuery == 'undefined') || (typeof jQuery.ui == 'undefined')) {      
 | 
	
		
			
				|  |  |  			writeScriptTag(buildJSURL('js/lib/jQuery/jquery-ui-1.8.16.custom.min.js'));
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function loadIDEDependencies() {
 | 
	
		
			
				|  |  |  		addJSToLoad('js/lib/jQuery/jquery.textarea.js');
 | 
	
	
		
			
				|  | @@ -206,7 +204,7 @@ amber = (function() {
 | 
	
		
			
				|  |  |  		addJSToLoad('js/lib/CodeMirror/smalltalk.js');
 | 
	
		
			
				|  |  |  		loadCSS('lib/CodeMirror/codemirror.css', 'js');
 | 
	
		
			
				|  |  |  		loadCSS('lib/CodeMirror/amber.css', 'js');
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	// This will be called after JS files have been loaded
 | 
	
		
			
				|  |  |  	function initializeSmalltalk(commitPath) {
 | 
	
	
		
			
				|  | @@ -217,14 +215,14 @@ amber = (function() {
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  			if (spec.ready) {
 | 
	
		
			
				|  |  |  				spec.ready();
 | 
	
		
			
				|  |  | -			};
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |  			evaluateSmalltalkScripts();
 | 
	
		
			
				|  |  |  		};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		loadAllJS(); 
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +		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
 | 
	
	
		
			
				|  | @@ -235,7 +233,7 @@ amber = (function() {
 | 
	
		
			
				|  |  |  			loadJS = loadJSViaJQuery;
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		loadNextJS();
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function loadNextJS() {
 | 
	
		
			
				|  |  |  		loadJS(jsToLoad[0], function(){
 | 
	
	
		
			
				|  | @@ -244,26 +242,26 @@ amber = (function() {
 | 
	
		
			
				|  |  |  				loadNextJS();
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		});
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function loadJSViaScriptTag(url, callback) {
 | 
	
		
			
				|  |  |  		writeScriptTag(url);
 | 
	
		
			
				|  |  |  		callback();
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function loadJSViaJQuery(url, callback) {
 | 
	
		
			
				|  |  |  		$.ajax({
 | 
	
		
			
				|  |  |  			dataType: "script",
 | 
	
		
			
				|  |  | -			url: jsToLoad[0],
 | 
	
		
			
				|  |  | +			url: url,
 | 
	
		
			
				|  |  |  			cache: deploy,
 | 
	
		
			
				|  |  |  			success: callback
 | 
	
		
			
				|  |  |  		});
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function writeScriptTag(src) {
 | 
	
		
			
				|  |  |  		var scriptString = '<script src="' + src + '" type="text/javascript"></script>';
 | 
	
		
			
				|  |  |  		document.write(scriptString);
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function evaluateSmalltalkScripts() {
 | 
	
		
			
				|  |  |  		jQuery(document).ready(function() {
 | 
	
	
		
			
				|  | @@ -274,11 +272,13 @@ amber = (function() {
 | 
	
		
			
				|  |  |  					[jQuery(elt).html()])
 | 
	
		
			
				|  |  |  			});
 | 
	
		
			
				|  |  |  		})
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	var localPackages;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function populateLocalPackages(){
 | 
	
		
			
				|  |  |  		var localStorageRE = /^smalltalk\.packages\.(.*)$/;
 | 
	
		
			
				|  |  | -		localPackages = {};
 | 
	
		
			
				|  |  | +		var localPackages = {};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		var match, key;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -291,14 +291,14 @@ amber = (function() {
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		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) {
 |