code: function firstRender() {
  
  		// VML namespaces can't be added until after complete. Listening
  		// for Perini's doScroll hack is not enough.
  		var ONREADYSTATECHANGE = 'onreadystatechange',
  			COMPLETE = 'complete';
  		// Note: in spite of JSLint's complaints, win == win.top is required
  		/*jslint eqeq: true*/
  		if (!hasSVG && win == win.top && doc.readyState !== COMPLETE) {
  		/*jslint eqeq: false*/
  			doc.attachEvent(ONREADYSTATECHANGE, function () {
  				doc.detachEvent(ONREADYSTATECHANGE, firstRender);
  				if (doc.readyState === COMPLETE) {
  					firstRender();
  				}
  			});
  			return;
  		}
  
  		// create the container
  		getContainer();
  
  		resetMargins();
  		setChartSize();
  
  		// Initialize the series
  		each(options.series || [], function (serieOptions) {
  			initSeries(serieOptions);
  		});
  
  		// Set the common inversion and transformation for inverted series after initSeries
  		chart.inverted = inverted = pick(inverted, options.chart.inverted);
  
  
  		getAxes();
  
  
  		chart.render = render;
  
  		// depends on inverted and on margins being set
  		chart.tracker = tracker = new MouseTracker(options.tooltip);
  
  		//globalAnimation = false;
  		render();
  
  		fireEvent(chart, 'load');
  
  		//globalAnimation = true;
  
  		// run callbacks
  		if (callback) {
  			callback.apply(chart, [chart]);
  		}
  		each(chart.callbacks, function (fn) {
  			fn.apply(chart, [chart]);
  		});
  	}
docs: Prepare for first rendering after all data are loaded