|  | @@ -1,7 +1,26 @@
 | 
	
		
			
				|  |  | -smalltalk.initialize();
 | 
	
		
			
				|  |  | +(function () {
 | 
	
		
			
				|  |  | +    var inBrowser = typeof amber !== "undefined" && typeof amber.load === "function";
 | 
	
		
			
				|  |  | +    function init() {
 | 
	
		
			
				|  |  | +        smalltalk.initialize();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -/* Similar to jQuery(document).ready() */
 | 
	
		
			
				|  |  | +        /* Similar to jQuery(document).ready() */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -if(this.amber && this.amber.smalltalkReady) {
 | 
	
		
			
				|  |  | -	this.amber.smalltalkReady();
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | +        if (inBrowser && amber.smalltalkReady) {
 | 
	
		
			
				|  |  | +            amber.smalltalkReady();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if (inBrowser) {
 | 
	
		
			
				|  |  | +        // init is lengthy process done in JavaScript.
 | 
	
		
			
				|  |  | +        // setTimeout here postpones it, so DOM ready
 | 
	
		
			
				|  |  | +        // event can occur sooner, thus load process
 | 
	
		
			
				|  |  | +        // may appear optically faster.
 | 
	
		
			
				|  |  | +        setTimeout(init, 0);
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +        // In certain configurations, setTimeout is not feasible.
 | 
	
		
			
				|  |  | +        // It is mainly for `amberc`-produced concatenated
 | 
	
		
			
				|  |  | +        // node.js programs. There, the actual "main" appears
 | 
	
		
			
				|  |  | +        // immediately after init, so it must happens synchronously.
 | 
	
		
			
				|  |  | +        init();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +})();
 |