|  | @@ -19,6 +19,7 @@ amber = (function() {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	var spec;
 |  |  	var spec;
 | 
											
												
													
														|  |  	var jsToLoad = [];
 |  |  	var jsToLoad = [];
 | 
											
												
													
														|  | 
 |  | +	var loadJS;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	that.toggleIDE = function() {
 |  |  	that.toggleIDE = function() {
 | 
											
												
													
														|  |  		if ($('#jtalk').length == 0) {
 |  |  		if ($('#jtalk').length == 0) {
 | 
											
										
											
												
													
														|  | @@ -55,8 +56,8 @@ amber = (function() {
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  		loadDependencies();
 |  |  		loadDependencies();
 | 
											
												
													
														|  | -		loadJS('compat.js');
 |  | 
 | 
											
												
													
														|  | -		loadJS('boot.js');
 |  | 
 | 
											
												
													
														|  | 
 |  | +		addJSToLoad('compat.js');
 | 
											
												
													
														|  | 
 |  | +		addJSToLoad('boot.js');
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  		if (deploy) {
 |  |  		if (deploy) {
 | 
											
												
													
														|  |  			loadPackages([
 |  |  			loadPackages([
 | 
											
										
											
												
													
														|  | @@ -98,7 +99,7 @@ amber = (function() {
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  		// Be sure to setup & initialize smalltalk classes
 |  |  		// Be sure to setup & initialize smalltalk classes
 | 
											
												
													
														|  | -		loadJS('init.js');
 |  | 
 | 
											
												
													
														|  | 
 |  | +		addJSToLoad('init.js');
 | 
											
												
													
														|  |  		initializeSmalltalk();
 |  |  		initializeSmalltalk();
 | 
											
												
													
														|  |  	};
 |  |  	};
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -108,11 +109,11 @@ amber = (function() {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  		for (var i=0; i < names.length; i++) {
 |  |  		for (var i=0; i < names.length; i++) {
 | 
											
												
													
														|  |  			name = names[i].split(/\.js$/)[0];
 |  |  			name = names[i].split(/\.js$/)[0];
 | 
											
												
													
														|  | -			loadJS(name + '.js', prefix);
 |  | 
 | 
											
												
													
														|  | 
 |  | +			addJSToLoad(name + '.js', prefix);
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  	};
 |  |  	};
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	function loadJS(name, prefix) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +	function addJSToLoad(name, prefix) {
 | 
											
												
													
														|  |  		jsToLoad.push(buildJSURL(name, prefix));
 |  |  		jsToLoad.push(buildJSURL(name, prefix));
 | 
											
												
													
														|  |  	};
 |  |  	};
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -143,25 +144,20 @@ amber = (function() {
 | 
											
												
													
														|  |  		document.getElementsByTagName("head")[0].appendChild(link);
 |  |  		document.getElementsByTagName("head")[0].appendChild(link);
 | 
											
												
													
														|  |  	};
 |  |  	};
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	function addScriptTag(src) {
 |  | 
 | 
											
												
													
														|  | -		var scriptString = '<script src="' + src + '" type="text/javascript"></script>';
 |  | 
 | 
											
												
													
														|  | -		document.write(scriptString);
 |  | 
 | 
											
												
													
														|  | -	}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |  	function loadDependencies() {
 |  |  	function loadDependencies() {
 | 
											
												
													
														|  |  		if (typeof jQuery == 'undefined') {
 |  |  		if (typeof jQuery == 'undefined') {
 | 
											
												
													
														|  | -			addScriptTag(buildJSURL('lib/jQuery/jquery-1.6.4.min.js'));
 |  | 
 | 
											
												
													
														|  | 
 |  | +			writeScriptTag(buildJSURL('lib/jQuery/jquery-1.6.4.min.js'));
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  		if ((typeof jQuery == 'undefined') || (typeof jQuery.ui == 'undefined')) {      
 |  |  		if ((typeof jQuery == 'undefined') || (typeof jQuery.ui == 'undefined')) {      
 | 
											
												
													
														|  | -			addScriptTag(buildJSURL('lib/jQuery/jquery-ui-1.8.16.custom.min.js'));
 |  | 
 | 
											
												
													
														|  | 
 |  | +			writeScriptTag(buildJSURL('lib/jQuery/jquery-ui-1.8.16.custom.min.js'));
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  	};
 |  |  	};
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	function loadIDEDependencies() {
 |  |  	function loadIDEDependencies() {
 | 
											
												
													
														|  | -		loadJS('lib/jQuery/jquery.textarea.js');
 |  | 
 | 
											
												
													
														|  | -		loadJS('lib/CodeMirror/codemirror.js');
 |  | 
 | 
											
												
													
														|  | -		loadJS('lib/CodeMirror/smalltalk.js');
 |  | 
 | 
											
												
													
														|  | 
 |  | +		addJSToLoad('lib/jQuery/jquery.textarea.js');
 | 
											
												
													
														|  | 
 |  | +		addJSToLoad('lib/CodeMirror/codemirror.js');
 | 
											
												
													
														|  | 
 |  | +		addJSToLoad('lib/CodeMirror/smalltalk.js');
 | 
											
												
													
														|  |  		loadCSS('lib/CodeMirror/codemirror.css', 'js');
 |  |  		loadCSS('lib/CodeMirror/codemirror.css', 'js');
 | 
											
												
													
														|  |  		loadCSS('lib/CodeMirror/amber.css', 'js');
 |  |  		loadCSS('lib/CodeMirror/amber.css', 'js');
 | 
											
												
													
														|  |  	};
 |  |  	};
 | 
											
										
											
												
													
														|  | @@ -178,34 +174,43 @@ amber = (function() {
 | 
											
												
													
														|  |  			}
 |  |  			}
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -		loadAllScripts(); 
 |  | 
 | 
											
												
													
														|  | -	}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -	
 |  | 
 | 
											
												
													
														|  | -	function loadAllScripts() {
 |  | 
 | 
											
												
													
														|  | -		if (typeof jQuery == 'undefined') {
 |  | 
 | 
											
												
													
														|  | -			for(var i in jsToLoad)
 |  | 
 | 
											
												
													
														|  | -				addScriptTag(jsToLoad[i]);
 |  | 
 | 
											
												
													
														|  | -		} else {
 |  | 
 | 
											
												
													
														|  | -			getScript(jsToLoad[0]); 
 |  | 
 | 
											
												
													
														|  | -		}
 |  | 
 | 
											
												
													
														|  | 
 |  | +		loadAllJS(); 
 | 
											
												
													
														|  |  	};
 |  |  	};
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |  	/* 
 |  |  	/* 
 | 
											
												
													
														|  |  	 * When loaded using AJAX, scripts order not guaranteed.
 |  |  	 * When loaded using AJAX, scripts order not guaranteed.
 | 
											
												
													
														|  | -	 * Load JS in the order they have been added
 |  | 
 | 
											
												
													
														|  | -	 * using loadJS.
 |  | 
 | 
											
												
													
														|  | 
 |  | +	 * 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 getScript(url) {
 |  | 
 | 
											
												
													
														|  | -		$.getScript(url, 
 |  | 
 | 
											
												
													
														|  | -								function(){
 |  | 
 | 
											
												
													
														|  | -									jsToLoad.shift();
 |  | 
 | 
											
												
													
														|  | -									if (jsToLoad.length > 0)
 |  | 
 | 
											
												
													
														|  | -										getScript(jsToLoad[0]);
 |  | 
 | 
											
												
													
														|  | -								});
 |  | 
 | 
											
												
													
														|  | -	}
 |  | 
 | 
											
												
													
														|  | -	
 |  | 
 | 
											
												
													
														|  | 
 |  | +	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) {
 | 
											
												
													
														|  | 
 |  | +		$.getScript(jsToLoad[0], callback);
 | 
											
												
													
														|  | 
 |  | +	};
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	function writeScriptTag(src) {
 | 
											
												
													
														|  | 
 |  | +		var scriptString = '<script src="' + src + '" type="text/javascript"></script>';
 | 
											
												
													
														|  | 
 |  | +		document.write(scriptString);
 | 
											
												
													
														|  | 
 |  | +	};
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	function populateLocalPackages(){
 |  |  	function populateLocalPackages(){
 | 
											
												
													
														|  |  		var localStorageRE = /^smalltalk\.packages\.(.*)$/;
 |  |  		var localStorageRE = /^smalltalk\.packages\.(.*)$/;
 |