(function() {

"use strict";
window.Suricate = window.Suricate || {};
Chart.defaults.global.responsive = true;
Chart.defaults.global.animation  = false;

Suricate.ChartJSChartFactory = function() {

};

Suricate.ChartJSChartFactory.prototype.createLineChart = function(container, options) {
    var chart = {};
    var libraryObject;

    var convertData = function(data) {
        var datasets = [];
        for (var index = 0, seriesCount = data.series.length; index < seriesCount; index++) {
            var serie = data.series[index];
            datasets.push({
                label: serie.name,
                strokeColor: serie.color,
                fillColor: "rgba(0, 0, 0, 0)",
                pointStrokeColor: serie.color,
                pointColor: serie.color,
                data: serie.values
            });
        }

        return {
            labels: data.labels,
            datasets: datasets
        };
    };

    var init = function(data, options) {
        var ctx       = container.find(".chart")[0].getContext("2d");
        libraryObject = new Chart(ctx).Line(data, options);
        var legend    = libraryObject.generateLegend();
        container.find(".legend").html(legend);
    };

    var data = {
        labels: [],
        datasets: [ { } ]
    };
    init(data, options);

    chart.update = function(data) {
        var chartJSData = convertData(data);
        libraryObject.destroy();
        init(chartJSData, options);
    };

    return chart;
};

}());