text: /* global Chart */
  
  'use strict';
  
  (function() {
  	Chart.plugins.register({
  		id: 'samples_filler_analyser',
  
  		beforeInit: function(chart, options) {
  			this.element = document.getElementById(options.target);
  		},
  
  		afterUpdate: function(chart) {
  			var datasets = chart.data.datasets;
  			var element = this.element;
  			var stats = [];
  			var meta, i, ilen, dataset;
  
  			if (!element) {
  				return;
  			}
  
  			for (i=0, ilen=datasets.length; i<ilen; ++i) {
  				meta = chart.getDatasetMeta(i).$filler;
  				if (meta) {
  					dataset = datasets[i];
  					stats.push({
  						fill: dataset.fill,
  						target: meta.fill,
  						visible: meta.visible,
  						index: i
  					});
  				}
  			}
  
  			this.element.innerHTML = '<table>' +
  				'<tr>' +
  					'<th>Dataset</th>' +
  					'<th>Fill</th>' +
  					'<th>Target (visibility)</th>' +
  				'</tr>' +
  				stats.map(function(stat) {
  					var target = stat.target;
  					var row =
  						'<td><b>' + stat.index + '</b></td>' +
  						'<td>' + JSON.stringify(stat.fill) + '</td>';
  
  					if (target === false) {
  						target = 'none';
  					} else if (isFinite(target)) {
  						target = 'dataset ' + target;
  					} else {
  						target = 'boundary "' + target + '"';
  					}
  
  					if (stat.visible) {
  						row += '<td>' + target + '</td>';
  					} else {
  						row += '<td>(hidden)</td>';
  					}
  
  					return '<tr>' + row + '</tr>';
  				}).join('') + '</table>';
  		}
  	});
  }());