docs: function render() {
  		var labels = options.labels,
  			credits = options.credits,
  			creditsHref;
  
  		// Title
  		setTitle();
  
  
  		// Legend
  		legend = chart.legend = new Legend();
  
  		// Get margins by pre-rendering axes
  		getMargins();
  		each(axes, function (axis) {
  			axis.setTickPositions(true); // update to reflect the new margins
  		});
  		adjustTickAmounts();
  		getMargins(); // second pass to check for new labels
  
  
  		// Draw the borders and backgrounds
  		drawChartBox();
  
  		// Axes
  		if (hasCartesianSeries) {
  			each(axes, function (axis) {
  				axis.render();
  			});
  		}
  
  
  		// The series
  		if (!chart.seriesGroup) {
  			chart.seriesGroup = renderer.g('series-group')
  				.attr({ zIndex: 3 })
  				.add();
  		}
  		each(series, function (serie) {
  			serie.translate();
  			serie.setTooltipPoints();
  			serie.render();
  		});
  
  
  		// Labels
  		if (labels.items) {
  			each(labels.items, function () {
  				var style = extend(labels.style, this.style),
  					x = pInt(style.left) + plotLeft,
  					y = pInt(style.top) + plotTop + 12;
  
  				// delete to prevent rewriting in IE
  				delete style.left;
  				delete style.top;
  
  				renderer.text(
  					this.html,
  					x,
  					y
  				)
  				.attr({ zIndex: 2 })
  				.css(style)
  				.add();
  
  			});
  		}
  
  		// Toolbar (don't redraw)
  		if (!chart.toolbar) {
  			chart.toolbar = Toolbar();
  		}
  
  		// Credits
  		if (credits.enabled && !chart.credits) {
  			creditsHref = credits.href;
  			chart.credits = renderer.text(
  				credits.text,
  				0,
  				0
  			)
  			.on('click', function () {
  				if (creditsHref) {
  					location.href = creditsHref;
  				}
  			})
  			.attr({
  				align: credits.position.align,
  				zIndex: 8
  			})
  			.css(credits.style)
  			.add()
  			.align(credits.position);
  		}
  
  		placeTrackerGroup();
  
  		// Set flag
  		chart.hasRendered = true;
  
  		// If the chart was rendered outside the top container, put it back in
  		if (renderToClone) {
  			renderTo.appendChild(container);
  			discardElement(renderToClone);
  			//updatePosition(container);
  		}
  	}