module.exports = function(grunt) {

    //Project configuration.
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        concat: {
            options: {
                separator: ''
            },
            dist: {
                src: [
                     'src/intro.js',
		     'src/purify.js',
                     'src/core.js',
                     'src/interactiveLayer.js',
                     'src/tooltip.js',
                     'src/utils.js',
                     'src/models/axis.js',
                     'src/models/historicalBar.js',
                     'src/models/bullet.js',
                     'src/models/bulletChart.js',
                     'src/models/cumulativeLineChart.js',
                     'src/models/discreteBar.js',
                     'src/models/discreteBarChart.js',
                     'src/models/distribution.js',
                     'src/models/historicalBar.js',
                     'src/models/historicalBarChart.js',
                     'src/models/indentedTree.js',
                     'src/models/legend.js',
                     'src/models/line.js',
                     'src/models/lineChart.js',
                     'src/models/linePlusBarChart.js',
                     'src/models/lineWithFocusChart.js',
                     'src/models/linePlusBarWithFocusChart.js',
                     'src/models/multiBar.js',
                     'src/models/multiBarChart.js',
                     'src/models/multiBarHorizontal.js',
                     'src/models/multiBarHorizontalChart.js',
                     'src/models/multiChart.js',
                     'src/models/ohlcBar.js',
                     'src/models/pie.js',
                     'src/models/pieChart.js',
                     'src/models/scatter.js',
                     'src/models/scatterChart.js',
                     'src/models/scatterPlusLineChart.js',
                     'src/models/sparkline.js',
                     'src/models/sparklinePlus.js',
                     'src/models/stackedArea.js',
                     'src/models/stackedAreaChart.js',
                     'src/outro.js'                     ],
                dest: 'nv.d3.js'
            }
        },
        uglify: {
            options: {
                banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
                    '<%= grunt.template.today("yyyy-mm-dd") %> */'
            },
            js: {
                files: {
                    'nv.d3.min.js': ['nv.d3.js']
                }
            }
        },
        jshint: {
            foo: {
                src: "src/**/*.js"
            },
            options: {
                jshintrc: '.jshintrc'
            }
        },
        watch: {
            js: {
                files: ["src/**/*.js"],
                tasks: ['concat']
            }
        },
        copy: {
          css: {
            files: [
              { src: 'src/nv.d3.css', dest: 'nv.d3.css' }
            ]
          }
        },
        cssmin: {
          dist: {
            files: {
              'nv.d3.min.css' : ['nv.d3.css']
            }
          }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-jshint');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.loadNpmTasks('grunt-contrib-cssmin');

    grunt.registerTask('default', ['concat', 'copy']);
    grunt.registerTask('production', ['concat', 'uglify', 'copy', 'cssmin']);
    grunt.registerTask('release', ['production']);
    grunt.registerTask('lint', ['jshint']);
};
