module.exports = function(grunt) {
    // Initializing the configuration object
    grunt.initConfig({
        // Task configuration  
        less: {
            development: {
                options: {
                    compress: true,
                    // minifying the result
                },
                files: { 
                    // compiling styles.less into styles.css
                    "./public/stylesheets/downloads.min.css": "./src/stylesheets/downloads.less",
                    "./public/stylesheets/compare.min.css": "./src/stylesheets/compare.less",
                    "./public/stylesheets/thankyou.min.css": "./src/stylesheets/thankyou.less",
                }
            }
        },
        concat: {
            options: {
                //separator: ';',
            },
            js_download: {
                src: ['./bower_components/jquery-migrate/jquery-migrate.min.js', './src/javascript/downloads.js', './bower_components/filtrify/js/filtrify.js'],
                dest: './public/javascript/downloads.min.js',
            },
            js_thankyou: {
                src: ['./bower_components/jquery-migrate/jquery-migrate.min.js', './bower_components/jquery-ui/jquery-ui.min.js', './src/javascript/thankyou.js'],
                dest: './public/javascript/thankyou.min.js',
            },
            css_download: {
                src: ['./public/stylesheets/downloads.min.css', './bower_components/filtrify/css/filtrify.css'],
                dest: './public/stylesheets/downloads.min.css',
            },
            css_thankyou: {
                src: ['./public/stylesheets/thankyou.min.css', './bower_components/jquery-ui/base/minified/jquery-ui.min.css'],
                dest: './public/stylesheets/thankyou.min.css',
            },
        },
        uglify: {
            options: {
                mangle: false
                // Use if you want the names of your functions and variables
                // unchanged.
            },
            js_files: {
                files: {
                    './public/javascript/downloads.min.js': './public/javascript/downloads.min.js',
                    './public/javascript/compare.min.js': './src/javascript/compare.js',
                    './public/javascript/thankyou.min.js': './public/javascript/thankyou.min.js',
                }
            },
        },
        watch: {
            js_files: {
                files: [
                './src/javascript/downloads.js', './bower_components/filtrify/js/filtrify.js', './src/javascript/thankyou.js', './src/javascript/compare.js'],
                tasks: ['concat:js_download', 'concat:js_thankyou', 'uglify:js_files']
            },
            less: {
                files: ['./src/stylesheets/*.less', './src/stylesheets/**/*.less'],
                tasks: ['less', 'concat:css_download', 'concat:css_thankyou'],
                options: {
                    livereload: true
                    // reloads the browser
                }
            },
        }
    });
    // Plugin loading
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-less');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    // Task definition
    grunt.registerTask('default', ['watch']);
};