No need to develop with minified modernizr
No need to develop with minified modernizr

--- /dev/null
+++ b/js/ext/modernizr.custom.js
@@ -1,1 +1,212 @@
-
+/* Modernizr 2.6.2 (Custom Build) | MIT & BSD

+ * Build: http://modernizr.com/download/#-addtest-teststyles

+ */

+;

+

+

+

+window.Modernizr = (function( window, document, undefined ) {

+

+    var version = '2.6.2',

+

+    Modernizr = {},

+

+

+    docElement = document.documentElement,

+

+    mod = 'modernizr',

+    modElem = document.createElement(mod),

+    mStyle = modElem.style,

+

+    inputElem  ,

+

+

+    toString = {}.toString,    tests = {},

+    inputs = {},

+    attrs = {},

+

+    classes = [],

+

+    slice = classes.slice,

+

+    featureName, 

+

+

+    injectElementWithStyles = function( rule, callback, nodes, testnames ) {

+

+      var style, ret, node, docOverflow,

+          div = document.createElement('div'),

+                body = document.body,

+                fakeBody = body || document.createElement('body');

+

+      if ( parseInt(nodes, 10) ) {

+                      while ( nodes-- ) {

+              node = document.createElement('div');

+              node.id = testnames ? testnames[nodes] : mod + (nodes + 1);

+              div.appendChild(node);

+          }

+      }

+

+                style = ['&#173;','<style id="s', mod, '">', rule, '</style>'].join('');

+      div.id = mod;

+          (body ? div : fakeBody).innerHTML += style;

+      fakeBody.appendChild(div);

+      if ( !body ) {

+                fakeBody.style.background = '';

+                fakeBody.style.overflow = 'hidden';

+          docOverflow = docElement.style.overflow;

+          docElement.style.overflow = 'hidden';

+          docElement.appendChild(fakeBody);

+      }

+

+      ret = callback(div, rule);

+        if ( !body ) {

+          fakeBody.parentNode.removeChild(fakeBody);

+          docElement.style.overflow = docOverflow;

+      } else {

+          div.parentNode.removeChild(div);

+      }

+

+      return !!ret;

+

+    },

+    _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;

+

+    if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {

+      hasOwnProp = function (object, property) {

+        return _hasOwnProperty.call(object, property);

+      };

+    }

+    else {

+      hasOwnProp = function (object, property) { 

+        return ((property in object) && is(object.constructor.prototype[property], 'undefined'));

+      };

+    }

+

+

+    if (!Function.prototype.bind) {

+      Function.prototype.bind = function bind(that) {

+

+        var target = this;

+

+        if (typeof target != "function") {

+            throw new TypeError();

+        }

+

+        var args = slice.call(arguments, 1),

+            bound = function () {

+

+            if (this instanceof bound) {

+

+              var F = function(){};

+              F.prototype = target.prototype;

+              var self = new F();

+

+              var result = target.apply(

+                  self,

+                  args.concat(slice.call(arguments))

+              );

+              if (Object(result) === result) {

+                  return result;

+              }

+              return self;

+

+            } else {

+

+              return target.apply(

+                  that,

+                  args.concat(slice.call(arguments))

+              );

+

+            }

+

+        };

+

+        return bound;

+      };

+    }

+

+    function setCss( str ) {

+        mStyle.cssText = str;

+    }

+

+    function setCssAll( str1, str2 ) {

+        return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));

+    }

+

+    function is( obj, type ) {

+        return typeof obj === type;

+    }

+

+    function contains( str, substr ) {

+        return !!~('' + str).indexOf(substr);

+    }

+

+

+    function testDOMProps( props, obj, elem ) {

+        for ( var i in props ) {

+            var item = obj[props[i]];

+            if ( item !== undefined) {

+

+                            if (elem === false) return props[i];

+

+                            if (is(item, 'function')){

+                                return item.bind(elem || obj);

+                }

+

+                            return item;

+            }

+        }

+        return false;

+    }

+    for ( var feature in tests ) {

+        if ( hasOwnProp(tests, feature) ) {

+                                    featureName  = feature.toLowerCase();

+            Modernizr[featureName] = tests[feature]();

+

+            classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);

+        }

+    }

+

+

+

+     Modernizr.addTest = function ( feature, test ) {

+       if ( typeof feature == 'object' ) {

+         for ( var key in feature ) {

+           if ( hasOwnProp( feature, key ) ) {

+             Modernizr.addTest( key, feature[ key ] );

+           }

+         }

+       } else {

+

+         feature = feature.toLowerCase();

+

+         if ( Modernizr[feature] !== undefined ) {

+                                              return Modernizr;

+         }

+

+         test = typeof test == 'function' ? test() : test;

+

+         if (typeof enableClasses !== "undefined" && enableClasses) {

+           docElement.className += ' ' + (test ? '' : 'no-') + feature;

+         }

+         Modernizr[feature] = test;

+

+       }

+

+       return Modernizr; 

+     };

+

+

+    setCss('');

+    modElem = inputElem = null;

+

+

+    Modernizr._version      = version;

+

+

+    Modernizr.testStyles    = injectElementWithStyles;

+    return Modernizr;

+

+})(this, this.document);

+;

file:a/js/ext/modernizr.min.js (deleted)
--- a/js/ext/modernizr.min.js
+++ /dev/null
@@ -1,4 +1,1 @@
-/* Modernizr 2.6.2 (Custom Build) | MIT & BSD

- * Build: http://modernizr.com/download/#-addtest-teststyles

- */

-;window.Modernizr=function(a,b,c){function u(a){i.cssText=a}function v(a,b){return u(prefixes.join(a+";")+(b||""))}function w(a,b){return typeof a===b}function x(a,b){return!!~(""+a).indexOf(b)}function y(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:w(f,"function")?f.bind(d||b):f}return!1}var d="2.6.2",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l={},m={},n={},o=[],p=o.slice,q,r=function(a,c,d,e){var h,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:g+(d+1),l.appendChild(j);return h=["&#173;",'<style id="s',g,'">',a,"</style>"].join(""),l.id=g,(m?l:n).innerHTML+=h,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=f.style.overflow,f.style.overflow="hidden",f.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),f.style.overflow=k),!!i},s={}.hasOwnProperty,t;!w(s,"undefined")&&!w(s.call,"undefined")?t=function(a,b){return s.call(a,b)}:t=function(a,b){return b in a&&w(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=p.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(p.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(p.call(arguments)))};return e});for(var z in l)t(l,z)&&(q=z.toLowerCase(),e[q]=l[z](),o.push((e[q]?"":"no-")+q));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)t(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof enableClasses!="undefined"&&enableClasses&&(f.className+=" "+(b?"":"no-")+a),e[a]=b}return e},u(""),h=j=null,e._version=d,e.testStyles=r,e}(this,this.document);
+

--- a/templates/main.tpl
+++ b/templates/main.tpl
@@ -47,7 +47,7 @@
 		],
 		d3: 'ext/d3.v2.min',
 		qtip: 'ext/jquery.qtip.min',
-		modernizr: 'ext/modernizr.min'
+		modernizr: 'ext/modernizr.custom'
 	},
 	config: {
 		'modules/snapshotformats': {

--- a/util/minify.sh
+++ b/util/minify.sh
@@ -34,7 +34,7 @@
 for i in ${JSDIR}/*${JSEXT}; do
 	echo "Minifying ${i}..."
 	JSMODULE="`basename ${i%$JSEXT}`"
-	java -classpath lib/rhino/js.jar:lib/closure/compiler.jar org.mozilla.javascript.tools.shell.Main lib/requirejs/r.js -o name=${JSMODULE} out=${JSDIR}/${JSMODULE}${MINEXT}.tmp baseUrl=${JSDIR} paths.jquery="empty:" paths.qtip="empty:" paths.d3="ext/d3.v2.min" paths.modernizr="ext/modernizr.min" optimize="closure" preserveLicenseComments="false"
+	java -classpath lib/rhino/js.jar:lib/closure/compiler.jar org.mozilla.javascript.tools.shell.Main lib/requirejs/r.js -o name=${JSMODULE} out=${JSDIR}/${JSMODULE}${MINEXT}.tmp baseUrl=${JSDIR} paths.jquery="empty:" paths.qtip="empty:" paths.d3="ext/d3.v2.min" paths.modernizr="ext/modernizr.custom" optimize="closure" preserveLicenseComments="false"
 	cat util/jsheader.js ${JSDIR}/${JSMODULE}${MINEXT}.tmp > ${JSDIR}/${JSMODULE}${MINEXT}
 	rm -f ${JSDIR}/${JSMODULE}${MINEXT}.tmp
 done

comments