// https://npmjs.org/package/grunt-contrib 
module.exports = function(grunt) {  
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    meta: {
      banner: '/*! <%= pkg.title %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %>\n' +
        ' * <%= pkg.homepage %>\n' +
        ' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author %>.\n' +
        ' * Licensed under the <%= pkg.license.name %> license.\n */ '
    },


    /**
     * CONCAT
     */
    concat: {
      options: {},

      scripts: {
        src: [
          'src/slideview.prefix',
          'src/helpers.js',
          'src/constants.js',
          'src/options.js',
          'src/slideview.js',
          'src/slideview.suffix'
        ],

        dest: 'slideview.js'
      }
    },


    /**
     * STRING REPLACE
     */
    'string-replace': {
      version: {
        files: {
          'slideview.js': ['slideview.js']
        },
        options: {
          replacements: [
            {
              pattern: '{{@VERSION}}',
              replacement: '<%= pkg.version %>'
            }
          ]
        }
      }
    },


    /** 
     * UGLIFY JS
     */
    uglify: {
      options: {
        banner: '<%= meta.banner %>',
        report: 'gzip',
        compress: true,
        drop_console: true
      },

      dist: {
        files: {
          'slideview.min.js': ['slideview.js']
        }
      }
    },

    /**
     * JSHINT
     */
    jshint: {
      options: {
        // Report JSHint errors but not fail the task
        force: true,

        // Ignore warnings
        '-W030': true, // `e && e.preventDefault()`
        '-W098': true, // is defined but never used

        globals: {
          window: true
        },

        // Enforcing
        'camelcase'     : true,     // Identifiers must be in camelCase
        'curly'         : true,     // Require {} for every new block or scope
        'eqeqeq'        : true,     // Require triple equals (===) for comparison
        'forin'         : true,     // Require filtering for..in loops with obj.hasOwnProperty()
        'immed'         : true,     // Require immediate invocations to be wrapped in parens e.g. `(function () { } ());`
        'indent'        : 2,        // {int} Number of spaces to use for indentation
        'latedef'       : false,    // Require variables/functions to be defined before being used
        'newcap'        : true,     // Require capitalization of all constructor functions e.g. `new F()`
        'noempty'       : true,     // Prohibit use of empty blocks
        'plusplus'      : true,     // Prohibit use of `++` & `--`
        'quotmark'      : 'single', // Require single quotes
        'undef'         : true,     // Require all non-global variables to be declared (prevents global leaks)
        'unused'        : true,     // Require all defined variables be used
        'strict'        : true,     // Requires all functions run in ES5 Strict Mode
        'maxparams'     : 3,        // {int} Max number of formal params allowed per function
        'maxlen'        : 100,      // {int} Max number of characters per line

        // Relaxing
        'debug'         : true,     // Allow debugger statements e.g. browser breakpoints.
      },

      src: ['slideview.js']
    },


    /**
     * Run `grunt watch` to watch files.
     */
    watch: {
      scripts: {
        files: ['src/**/*.js', 'src/slideview.prefix', 'src/slideview.suffix'],
        tasks: ['default'],
        options: { spawn: false }
      }
    }
  });


  /**
   * Load the Grunt plugins.
   */
  [
    'grunt-contrib-concat',
    'grunt-string-replace',
    'grunt-contrib-uglify', 
    'grunt-contrib-jshint',
    'grunt-contrib-watch'
  ].forEach(grunt.loadNpmTasks);

  // The default task.
  grunt.registerTask('default', ['concat', 'string-replace', 'uglify', 'jshint']);

};

@@ -1805,21 +1805,16 @@
 melcase'
-     
 : true, 
@@ -1868,29 +1868,24 @@
  'curly'    
-  
-   
 : true,     
@@ -1943,21 +1943,16 @@
 'eqeqeq'
-     
    : tru
@@ -2019,21 +2019,16 @@
  'forin'
-     
     : tr
@@ -2111,21 +2111,16 @@
  'immed'
-     
     : tr
@@ -2229,21 +2229,16 @@
 'indent'
-     
    : 2, 
@@ -2246,22 +2246,16 @@
       //
- %7Bint%7D
  Number 
@@ -2304,21 +2304,16 @@
 latedef'
-     
   : fals
@@ -2397,21 +2397,16 @@
 'newcap'
-     
    : tru
@@ -2499,21 +2499,16 @@
 noempty'
-     
   : true
@@ -2563,21 +2563,16 @@
 lusplus'
-     
  : true,
@@ -2625,21 +2625,16 @@
 uotmark'
-     
  : 'sing
@@ -2678,21 +2678,16 @@
  'undef'
-     
     : tr
@@ -2785,21 +2785,16 @@
 'unused'
-     
    : tru
@@ -2857,21 +2857,16 @@
 'strict'
-     
    : tru
@@ -2940,21 +2940,16 @@
 xparams'
-     
 : 3,    
@@ -2946,38 +2946,32 @@
 s': 3,        //
- %7Bint%7D
  Max number of f
@@ -3020,21 +3020,16 @@
 'maxlen'
-     
    : 100
@@ -3041,14 +3041,8 @@
   //
- %7Bint%7D
  Max
@@ -3089,24 +3089,24 @@
 // Relaxing%0A
+
         'deb
@@ -3108,21 +3108,16 @@
  'debug'
-     
     : tr

update Gruntfile