|  | @@ -21,6 +21,7 @@ amber = (function() {
 | 
	
		
			
				|  |  |  	var localStorageSource = [];
 | 
	
		
			
				|  |  |  	var localPackages;
 | 
	
		
			
				|  |  |  	var spec;
 | 
	
		
			
				|  |  | +	var jsToLoad = [];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	that.load = function(obj) {
 | 
	
		
			
				|  |  |  		spec = obj || {};
 | 
	
	
		
			
				|  | @@ -110,6 +111,10 @@ amber = (function() {
 | 
	
		
			
				|  |  |  	};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function loadJS(name, prefix) {
 | 
	
		
			
				|  |  | +		jsToLoad.push(buildJSURL(name, prefix));
 | 
	
		
			
				|  |  | +	};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	function buildJSURL(name, prefix) {
 | 
	
		
			
				|  |  |  		var prefix = prefix || 'js';
 | 
	
		
			
				|  |  |  		var name = name;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -117,9 +122,7 @@ amber = (function() {
 | 
	
		
			
				|  |  |  			name = name + nocache;
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		var url = home + prefix + '/' + name;
 | 
	
		
			
				|  |  | -		var scriptString = '<script src="' + url + '" type="text/javascript"></script>';
 | 
	
		
			
				|  |  | -		document.write(scriptString);
 | 
	
		
			
				|  |  | +		return home + prefix + '/' + name;
 | 
	
		
			
				|  |  |  	};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function loadCSS(name, prefix) {
 | 
	
	
		
			
				|  | @@ -138,13 +141,18 @@ amber = (function() {
 | 
	
		
			
				|  |  |  		document.getElementsByTagName("head")[0].appendChild(link);
 | 
	
		
			
				|  |  |  	};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	function addScriptTag(src) {
 | 
	
		
			
				|  |  | +		var scriptString = '<script src="' + src + '" type="text/javascript"></script>';
 | 
	
		
			
				|  |  | +		document.write(scriptString);
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    function loadDependencies() {
 | 
	
		
			
				|  |  |  		if (typeof jQuery == 'undefined') {
 | 
	
		
			
				|  |  | -			loadJS('lib/jQuery/jquery-1.6.4.min.js');
 | 
	
		
			
				|  |  | +			addScriptTag(buildJSURL('lib/jQuery/jquery-1.6.4.min.js'));
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		if ((typeof jQuery == 'undefined') || (typeof jQuery.ui == 'undefined')) {      
 | 
	
		
			
				|  |  | -			loadJS('lib/jQuery/jquery-ui-1.8.16.custom.min.js');
 | 
	
		
			
				|  |  | +			addScriptTag(buildJSURL('lib/jQuery/jquery-ui-1.8.16.custom.min.js'));
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |    };
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -158,9 +166,7 @@ amber = (function() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	// This will be called after JS files have been loaded
 | 
	
		
			
				|  |  |  	function initializeSmalltalk() {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  		window.smalltalkReady = function() {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  			for (var i=0; i < localStorageSource.length; i++) {
 | 
	
		
			
				|  |  |  				eval(localStorageSource[i]);
 | 
	
		
			
				|  |  |  			}
 | 
	
	
		
			
				|  | @@ -173,8 +179,30 @@ amber = (function() {
 | 
	
		
			
				|  |  |  				spec.ready();
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		if (typeof jQuery == 'undefined') {
 | 
	
		
			
				|  |  | +			for(var i in jsToLoad)
 | 
	
		
			
				|  |  | +				addScriptTag(jsToLoad[i]);
 | 
	
		
			
				|  |  | +		} else {
 | 
	
		
			
				|  |  | +			getScript(jsToLoad[0]); 
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  	};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	/* 
 | 
	
		
			
				|  |  | +	 * When loaded using AJAX, scripts order not guaranteed.
 | 
	
		
			
				|  |  | +	 * Load JS in the order they have been added
 | 
	
		
			
				|  |  | +	 * using loadJS.
 | 
	
		
			
				|  |  | +	 */
 | 
	
		
			
				|  |  | +	function getScript(url) {
 | 
	
		
			
				|  |  | +		$.getScript(url, 
 | 
	
		
			
				|  |  | +								function(){
 | 
	
		
			
				|  |  | +									jsToLoad.shift();
 | 
	
		
			
				|  |  | +									if (jsToLoad.length > 0)
 | 
	
		
			
				|  |  | +										getScript(jsToLoad[0]);
 | 
	
		
			
				|  |  | +								});
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	function populateLocalPackages(){
 | 
	
		
			
				|  |  |  		var localStorageRE = /^smalltalk\.packages\.(.*)$/;
 | 
	
		
			
				|  |  |  		localPackages = {};
 |