 
(function(){



var series = [{"name":"2007 SEP", "y": null },{"name":"2007 OCT", "y": null },{"name":"2007 NOV", "y": null },{"name":"2007 DEC", "y": null },{"name":"2008 JAN", "y": null },{"name":"2008 FEB", "y": null },{"name":"2008 MAR", "y": null },{"name":"2008 APR", "y": null },{"name":"2008 MAY", "y": null },{"name":"2008 JUN", "y": null },{"name":"2008 JUL", "y": null },{"name":"2008 AUG", "y": null },{"name":"2008 SEP", "y": null },{"name":"2008 OCT", "y": null },{"name":"2008 NOV", "y": null },{"name":"2008 DEC", "y": null },{"name":"2009 JAN", "y": null },{"name":"2009 FEB", "y": null },{"name":"2009 MAR", "y": null },{"name":"2009 APR", "y": null },{"name":"2009 MAY", "y": null },{"name":"2009 JUN", "y": null },{"name":"2009 JUL", "y": null },{"name":"2009 AUG", "y": null },{"name":"2009 SEP", "y": null },{"name":"2009 OCT", "y": null },{"name":"2009 NOV", "y": null },{"name":"2009 DEC", "y": null },{"name":"2010 JAN", "y": null },{"name":"2010 FEB", "y": null },{"name":"2010 MAR", "y": null },{"name":"2010 APR", "y": null },{"name":"2010 MAY", "y": null },{"name":"2010 JUN", "y": null },{"name":"2010 JUL", "y": null },{"name":"2010 AUG", "y": null },{"name":"2010 SEP", "y": null },{"name":"2010 OCT", "y": null },{"name":"2010 NOV", "y": null },{"name":"2010 DEC", "y": null },]

var description = {"title":"PS: Gross fixed capital formation: £m CPNSA","contact":{"email":"fraser.munro@ons.gov.uk","name":"Fraser Munro","telephone":"+44 (0)1633 456402"},"releaseDate":"2020-02-21T00:00:00.000Z","nextRelease":"20 March 2020","datasetId":"PUSF","datasetUri":"/economy/governmentpublicsectorandtaxes/publicsectorfinance/datasets/publicsectorfinances","cdid":"ANSQ","unit":"m","preUnit":"£","source":"","date":"2019 Q3","number":"17472","sampleSize":"0"};
var linechart = {
   chart: {
     type: 'line',
     marginRight: 16,
    
    events: {
        load: function () {
            var chart = this,
                yAxis = chart.yAxis[0],
                tp = yAxis.tickPositions,
                firstLabel = yAxis.ticks[tp[0]].label.getBBox().width,
                lastLabel = yAxis.ticks[tp[tp.length - 1]].label.getBBox().width,
                bb = yAxis.axisTitle.getBBox();
            yAxis.update({
                title: {
                offset: -bb.width + (firstLabel > lastLabel ? firstLabel : lastLabel)
            }
            });
        }
    }
   },
   colors: ['#007dc3', '#409ed2', '#7fbee1', '#007dc3', '#409ed2', '#7fbee1'],

   title: {
     text: description.title
   },
   subtitle: {
     text: 'Source: ' + description.source,
     floating: true,
     align: 'right',
     x: 0,
     verticalAlign: 'bottom',
     y: 10
   },
   navigation: {
     buttonOptions: {
       enabled: false
     }
   },
   xAxis: {
     categories: ["2007 SEP","2007 OCT","2007 NOV","2007 DEC","2008 JAN","2008 FEB","2008 MAR","2008 APR","2008 MAY","2008 JUN","2008 JUL","2008 AUG","2008 SEP","2008 OCT","2008 NOV","2008 DEC","2009 JAN","2009 FEB","2009 MAR","2009 APR","2009 MAY","2009 JUN","2009 JUL","2009 AUG","2009 SEP","2009 OCT","2009 NOV","2009 DEC","2010 JAN","2010 FEB","2010 MAR","2010 APR","2010 MAY","2010 JUN","2010 JUL","2010 AUG","2010 SEP","2010 OCT","2010 NOV","2010 DEC",],
      tickPositioner: function () {
       var positions = [];
       var increment = Math.ceil(((this.dataMax) - (this.dataMin)) / 16);
       var tick = Math.floor(this.dataMin);
       for (tick; tick < this.dataMax; tick += increment) {
         positions.push(tick);
       }
       //prevent last tick label overlap the last data in the array if too close
       var diff = tick - this.dataMax;
       if(diff >= (increment /2) ) {
        var deleted = positions.pop();
       }

       positions.push(this.dataMax);
       return positions;
     },
     labels: {
        formatter: function() {
          var w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
          var response = '';
          if (w < 768) {
            if (this.isFirst) {
              count = 0;
            }
            if (count % 4 === 0 || this.isLast) {
              response = this.value;
            }
            count++;
          } else {
            response = this.value;
          }
          return response;
        }
     },
     tickmarkPlacement: 'on'
   },
   yAxis: {
     title: {
        text: description.preUnit + description.unit,
       align: 'high',
       rotation: 360,
       x: -15,
       y: -10
     },
    labels: {
      format: '{value:,f}'
    }
   },

   credits: {
     enabled: false
   },

    annotationsOptions: {
        enabledButtons: false
    },

   plotOptions: {
     series: {
       turboThreshold:0,
       shadow: false,
       states: {
         hover: {
           enabled: true,
           shadow: false,
           lineWidth: 3,
           lineWidthPlus: 0,
           marker: {
             height: 0,
             width: 0,
             halo: false,
             enabled: true,
             fillColor: null,
             radiusPlus: null,
             lineWidth: 3,
             lineWidthPlus: 0
           }
         }
       }
     }
   },
   tooltip: {
     shared: true,
     width: '150px',
     crosshairs: {
       width: 2,
       color: '#f37121'
     },
     positioner: function(labelWidth, labelHeight, point) {
       var w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
       var points = {
         x: 30,
         y: 42
       };
       var tooltipX, tooltipY;
       var chart = Highcharts.charts[Highcharts.charts.length - 1];
       if (w > 768) {

         if (point.plotX + labelWidth > chart.plotWidth) {
           tooltipX = point.plotX + chart.plotLeft - labelWidth - 20;
           $("#custom-tooltip").removeClass('tooltip-left');
         } else {
           tooltipX = point.plotX + chart.plotLeft + 20;
           $("#custom-tooltip").removeClass('tooltip-right');
         }

         tooltipY = 50;
         points = {
           x: tooltipX,
           y: tooltipY
         };
       } else {
         $("#custom-tooltip").removeClass('tooltip-left');
         $("#custom-tooltip").removeClass('tooltip-right');
       }

       return points;
     },

     formatter: function() {
       var id1 = '<div id="custom-tooltip" class="tooltip-left tooltip-right">';
       var block = id1 + "<div class='sidebar' >";
       var title = '<b class="title">' + this.points[0].key + ': </b>';
       var symbol = ['<div class="circle">●</div>', '<div class="square">■</div>', '<div class="diamond">♦</div>', '<div class="triangle">▲</div>', '<div class="triangle">▼</div>'];

       var content = block;

       // symbols
       $.each(this.points, function(i, val) {
         content += symbol[i];
       });

       content += "<br/></div>";
       content += "<div class='maintext maintext__fixed-width'>";
       content += title;

       // series names and values
       $.each(this.points, function(i, val) {
         content += '<div class="tiptext">' + val.point.series.chart.series[i].name + "<br/><b>Value: " + val.point.series.chart.series[i].options.preUnit + numberWithCommas(val.y) + " " + val.point.series.chart.series[i].options.unit + '</b></div>';
       });
       content += "</div>";
       return content;
     },

     backgroundColor: 'rgba(255, 255, 255, 0)',
     borderWidth: 0,
     borderColor: 'rgba(255, 255, 255, 0)',
     shadow: false,
     useHTML: true

   },
   series: [{
     name: description.title,
     id: description.id,
     unit: description.unit,
     preUnit: description.preUnit,
     data: series,
     marker: {
       enabled:true,
       radius:2,
       symbol: "circle",
       states: {
         hover: {
           fillColor: '#007dc3',
           radiusPlus: 0,
           lineWidthPlus: 0
         }
       }
     },
     dashStyle: 'Solid'
   }]
 };

if(!description.isIndex) {
  var min;
  for(i = 0; i<series.length; i++) {
   min = min ? Math.min(min, series[i].y) : series[i].y;
  }
       
  if(min > 0) {
   linechart.yAxis.min = 0;
  } else {
   linechart.yAxis.min = min - 1;
  }

 };


    function numberWithCommas(number) {
    var parts = number.toString().split(".");
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    return parts.join(".");
    }

window.linechart = linechart;
return linechart;


 })()