docs: function (options) {
  		var chart = this,
  			renderer = chart.renderer,
  			btnOptions = merge(chart.options.navigation.buttonOptions, options),
  			onclick = btnOptions.onclick,
  			menuItems = btnOptions.menuItems,
  			symbol,
  			button,
  			symbolAttr = {
  				stroke: btnOptions.symbolStroke,
  				fill: btnOptions.symbolFill
  			},
  			symbolSize = btnOptions.symbolSize || 12;
  		if (!chart.btnCount) {
  			chart.btnCount = 0;
  		}
  
  		// Keeps references to the button elements
  		if (!chart.exportDivElements) {
  			chart.exportDivElements = [];
  			chart.exportSVGElements = [];
  		}
  
  		if (btnOptions.enabled === false) {
  			return;
  		}
  
  
  		var attr = btnOptions.theme,
  			states = attr.states,
  			hover = states && states.hover,
  			select = states && states.select,
  			callback;
  
  		delete attr.states;
  
  		if (onclick) {
  			callback = function () {
  				onclick.apply(chart, arguments);
  			};
  
  		} else if (menuItems) {
  			callback = function () {
  				chart.contextMenu(
  					button.menuClassName,
  					menuItems,
  					button.translateX,
  					button.translateY,
  					button.width,
  					button.height,
  					button
  				);
  				button.setState(2);
  			};
  		}
  
  
  		if (btnOptions.text && btnOptions.symbol) {
  			attr.paddingLeft = Highcharts.pick(attr.paddingLeft, 25);
  
  		} else if (!btnOptions.text) {
  			extend(attr, {
  				width: btnOptions.width,
  				height: btnOptions.height,
  				padding: 0
  			});
  		}
  
  		button = renderer.button(btnOptions.text, 0, 0, callback, attr, hover, select)
  			.attr({
  				title: chart.options.lang[btnOptions._titleKey],
  				'stroke-linecap': 'round'
  			});
  		button.menuClassName = options.menuClassName || PREFIX + 'menu-' + chart.btnCount++;
  
  		if (btnOptions.symbol) {
  			symbol = renderer.symbol(
  					btnOptions.symbol,
  					btnOptions.symbolX - (symbolSize / 2),
  					btnOptions.symbolY - (symbolSize / 2),
  					symbolSize,
  					symbolSize
  				)
  				.attr(extend(symbolAttr, {
  					'stroke-width': btnOptions.symbolStrokeWidth || 1,
  					zIndex: 1
  				})).add(button);
  		}
  
  		button.add()
  			.align(extend(btnOptions, {
  				width: button.width,
  				x: Highcharts.pick(btnOptions.x, buttonOffset) // #1654
  			}), true, 'spacingBox');
  
  		buttonOffset += (button.width + btnOptions.buttonSpacing) * (btnOptions.align === 'right' ? -1 : 1);
  
  		chart.exportSVGElements.push(button, symbol);
  
  	}