docs: function() {
              this.borderWidth = this.roundWithMin(this.chartHeight / 60, 3);
              this.tickOffset = this.roundWithMin(this.chartHeight / 100, 3);
              this.tickLabelOffset = this.borderWidth;
              this.tickFontSize = this.roundWithMin(this.chartHeight / 25, 10);  // in pixels
              if(!this.startAngle) {
                  this.startAngle = this.degToRad(45 + 90); // specify in degrees for legibility, + 90 because we start at south
              }
              if(!this.arcAngle) {
                  this.arcAngle = this.degToRad(270);  // ditto above comment
              }
              this.valueFontSize = this.roundWithMin(this.chartHeight / 15, 15);  // in pixels
              if(this.isShiny) {
                  this.needleTailLength = this.roundWithMin(this.chartHeight / 15, 10);
                  this.needleTailWidth = this.roundWithMin(this.chartHeight / 50, 6);
                  this.knobWidth = this.roundWithMin(this.chartHeight / 30, 7);
              }
              else {
                  this.needleWidth = this.roundWithMin(this.chartHeight / 60, 3);
              }
              if(!this.isShiny) {
                  this.bandOffset = 0;
                  this.bandThickness = this.roundWithMin(this.chartHeight / 30, 7);
              }
              else {
                  this.bandOffset = this.borderWidth;
                  this.bandThickness = this.roundWithMin(this.chartHeight / 40, 4);
              }
              this.tickColor = (!this.isShiny) ? this.foregroundColor : 'silver';
              this.tickFontColor = (!this.isShiny) ? this.fontColor : 'silver';
              this.valueColor = (!this.isShiny) ? this.fontColor : '#b8b167';
              this.tickLength = this.roundWithMin(this.chartHeight / 20, 4);
              this.minorTickLength = this.tickLength / 2;
              this.radius = (this.chartHeight - 2 * (this.verticalPadding + this.borderWidth)) / 2;
              this.valueHeight = this.chartHeight - ((this.radius / 4) + this.verticalPadding + this.borderWidth);
              this.needleLength = (!this.isShiny) ? this.radius - (this.bandThickness) / 2 : this.radius;
  
              this.tickStart = this.radius - this.bandOffset - this.bandThickness - this.tickOffset;
              this.tickEnd = this.tickStart - this.tickLength;
              this.tickLabelPosition = this.tickEnd - this.tickLabelOffset;
              this.minorTickEnd = this.tickStart - this.minorTickLength;
  
              if(this.isShiny) {
                  this.elements.border = this.renderer.circle(this.chartWidth / 2,
                              this.chartHeight / 2, this.radius + this.borderWidth)
                      .attr({
                          fill: '#edede7',
                          stroke: 'silver',
                          'stroke-width': 1
                      })
                      .add();
  
                  this.elements.background = this.renderer.circle(this.chartWidth / 2,
                              this.chartHeight / 2, this.radius)
                      .attr({
                          fill: '#000000'
                      })
                      .add();
              }
  
              if(this.showRangeBand) {
                  this.drawColorBand();
              }
              this.drawTicks();
              this.drawIndicator(this.value);
              if(this.showValue) {
                  this.drawValueDisplay();
              }
  
              this.checkOutOfRange(this.value);
          }