From 507a9452eb51c84893948e3d7aa2954e14d2757a Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 30 Jun 2015 13:27:54 +0000 Subject: [PATCH] --- js/libs/fluidbook/fluidbook.l10n.js | 2 +- js/libs/fluidbook/fluidbook.nav.js | 6 +- js/libs/modernizr/modernizr.js | 964 ++++++++++++++++------------ js/main.js | 6 +- 4 files changed, 556 insertions(+), 422 deletions(-) diff --git a/js/libs/fluidbook/fluidbook.l10n.js b/js/libs/fluidbook/fluidbook.l10n.js index dd070f1b..dd48a971 100644 --- a/js/libs/fluidbook/fluidbook.l10n.js +++ b/js/libs/fluidbook/fluidbook.l10n.js @@ -35,7 +35,7 @@ FluidbookL10N.prototype = { initMultilang: function () { var forceLocales; try { - forceLocales = window.sessionStorage.getItem('locales'); + forceLocales = window.localStorage.getItem('locales'); } catch (err) { } diff --git a/js/libs/fluidbook/fluidbook.nav.js b/js/libs/fluidbook/fluidbook.nav.js index 9f4e256c..d3236edc 100644 --- a/js/libs/fluidbook/fluidbook.nav.js +++ b/js/libs/fluidbook/fluidbook.nav.js @@ -68,8 +68,8 @@ FluidbookNav.prototype = { // index, chapters, print, friend, bookmark, pdf, archives, basket, fullscreen, sound, 3d, help try { - var skipHome = (window.sessionStorage.getItem('home') === '0'); - var forceHome = (window.sessionStorage.getItem('home') === '1'); + var skipHome = (window.localStorage.getItem('home') === '0'); + var forceHome = (window.localStorage.getItem('home') === '1'); if (forceHome) { if (this.fluidbook.datas.navOrder.indexOf('home') === -1) { @@ -90,7 +90,7 @@ FluidbookNav.prototype = { } try { if (homeURL != '') { - this.addLink('nav-home', window.sessionStorage.getItem('apphome'), 'home', 'home'); + this.addLink('nav-home', window.localStorage.getItem('apphome'), 'home', 'home'); } } catch (err) { diff --git a/js/libs/modernizr/modernizr.js b/js/libs/modernizr/modernizr.js index 61c8a90f..0a741205 100644 --- a/js/libs/modernizr/modernizr.js +++ b/js/libs/modernizr/modernizr.js @@ -4,597 +4,599 @@ ; - -window.Modernizr = (function( window, document, undefined ) { +window.Modernizr = (function (window, document, undefined) { var version = '2.6.2', - Modernizr = {}, - - enableClasses = true, + Modernizr = {}, - docElement = document.documentElement, + enableClasses = true, - mod = 'modernizr', - modElem = document.createElement(mod), - mStyle = modElem.style, + docElement = document.documentElement, - inputElem = document.createElement('input') , + mod = 'modernizr', + modElem = document.createElement(mod), + mStyle = modElem.style, - smile = ':)', + inputElem = document.createElement('input'), - toString = {}.toString, + smile = ':)', - prefixes = ' -webkit- -moz- -o- -ms- '.split(' '), + toString = {}.toString, + prefixes = ' -webkit- -moz- -o- -ms- '.split(' '), - omPrefixes = 'Webkit Moz O ms', + omPrefixes = 'Webkit Moz O ms', - cssomPrefixes = omPrefixes.split(' '), + cssomPrefixes = omPrefixes.split(' '), - domPrefixes = omPrefixes.toLowerCase().split(' '), + domPrefixes = omPrefixes.toLowerCase().split(' '), - ns = {'svg': 'http://www.w3.org/2000/svg'}, + ns = {'svg': 'http://www.w3.org/2000/svg'}, - tests = {}, - inputs = {}, - attrs = {}, + tests = {}, + inputs = {}, + attrs = {}, - classes = [], + classes = [], - slice = classes.slice, + slice = classes.slice, - featureName, + featureName, - injectElementWithStyles = function( rule, callback, nodes, testnames ) { + injectElementWithStyles = function (rule, callback, nodes, testnames) { - var style, ret, node, docOverflow, - div = document.createElement('div'), + 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 = ['­',''].join(''); - div.id = mod; - (body ? div : fakeBody).innerHTML += style; - fakeBody.appendChild(div); - if ( !body ) { + if (parseInt(nodes, 10)) { + while (nodes--) { + node = document.createElement('div'); + node.id = testnames ? testnames[nodes] : mod + (nodes + 1); + div.appendChild(node); + } + } + + 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); - } + 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); + } - ret = callback(div, rule); - if ( !body ) { - fakeBody.parentNode.removeChild(fakeBody); - docElement.style.overflow = docOverflow; - } else { - div.parentNode.removeChild(div); - } + return !!ret; - return !!ret; + }, - }, + testMediaQuery = function (mq) { - testMediaQuery = function( mq ) { + var matchMedia = window.matchMedia || window.msMatchMedia; + if (matchMedia) { + return matchMedia(mq).matches; + } - var matchMedia = window.matchMedia || window.msMatchMedia; - if ( matchMedia ) { - return matchMedia(mq).matches; - } + var bool; - var bool; + injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function (node) { + bool = (window.getComputedStyle ? + getComputedStyle(node, null) : + node.currentStyle)['position'] == 'absolute'; + }); - injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) { - bool = (window.getComputedStyle ? - getComputedStyle(node, null) : - node.currentStyle)['position'] == 'absolute'; - }); + return bool; - return bool; + }, - }, - - isEventSupported = (function() { + isEventSupported = (function () { - var TAGNAMES = { - 'select': 'input', 'change': 'input', - 'submit': 'form', 'reset': 'form', - 'error': 'img', 'load': 'img', 'abort': 'img' - }; + var TAGNAMES = { + 'select': 'input', 'change': 'input', + 'submit': 'form', 'reset': 'form', + 'error': 'img', 'load': 'img', 'abort': 'img' + }; - function isEventSupported( eventName, element ) { + function isEventSupported(eventName, element) { - element = element || document.createElement(TAGNAMES[eventName] || 'div'); - eventName = 'on' + eventName; + element = element || document.createElement(TAGNAMES[eventName] || 'div'); + eventName = 'on' + eventName; - var isSupported = eventName in element; + var isSupported = eventName in element; - if ( !isSupported ) { - if ( !element.setAttribute ) { - element = document.createElement('div'); - } - if ( element.setAttribute && element.removeAttribute ) { - element.setAttribute(eventName, ''); - isSupported = is(element[eventName], 'function'); + if (!isSupported) { + if (!element.setAttribute) { + element = document.createElement('div'); + } + if (element.setAttribute && element.removeAttribute) { + element.setAttribute(eventName, ''); + isSupported = is(element[eventName], 'function'); + + if (!is(element[eventName], 'undefined')) { + element[eventName] = undefined; + } + element.removeAttribute(eventName); + } + } - if ( !is(element[eventName], 'undefined') ) { - element[eventName] = undefined; + element = null; + return isSupported; } - element.removeAttribute(eventName); - } - } - element = null; - return isSupported; - } - return isEventSupported; - })(), + return isEventSupported; + })(), - _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp; + _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp; - if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) { - hasOwnProp = function (object, property) { - return _hasOwnProperty.call(object, property); - }; + 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')); - }; + hasOwnProp = function (object, property) { + return ((property in object) && is(object.constructor.prototype[property], 'undefined')); + }; } if (!Function.prototype.bind) { - Function.prototype.bind = function bind(that) { + Function.prototype.bind = function bind(that) { - var target = this; + var target = this; - if (typeof target != "function") { - throw new TypeError(); - } + if (typeof target != "function") { + throw new TypeError(); + } - var args = slice.call(arguments, 1), - bound = function () { + var args = slice.call(arguments, 1), + bound = function () { - if (this instanceof bound) { + if (this instanceof bound) { - var F = function(){}; - F.prototype = target.prototype; - var self = new F(); + 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; + var result = target.apply( + self, + args.concat(slice.call(arguments)) + ); + if (Object(result) === result) { + return result; + } + return self; - } else { + } else { - return target.apply( - that, - args.concat(slice.call(arguments)) - ); + return target.apply( + that, + args.concat(slice.call(arguments)) + ); - } + } - }; + }; - return bound; - }; + return bound; + }; } - function setCss( str ) { + function setCss(str) { mStyle.cssText = str; } - function setCssAll( str1, str2 ) { + function setCssAll(str1, str2) { return setCss(prefixes.join(str1 + ';') + ( str2 || '' )); } - function is( obj, type ) { + function is(obj, type) { return typeof obj === type; } - function contains( str, substr ) { + function contains(str, substr) { return !!~('' + str).indexOf(substr); } - function testProps( props, prefixed ) { - for ( var i in props ) { + function testProps(props, prefixed) { + for (var i in props) { var prop = props[i]; - if ( !contains(prop, "-") && mStyle[prop] !== undefined ) { + if (!contains(prop, "-") && mStyle[prop] !== undefined) { return prefixed == 'pfx' ? prop : true; } } return false; } - function testDOMProps( props, obj, elem ) { - for ( var i in props ) { + function testDOMProps(props, obj, elem) { + for (var i in props) { var item = obj[props[i]]; - if ( item !== undefined) { + if (item !== undefined) { - if (elem === false) return props[i]; + if (elem === false) return props[i]; - if (is(item, 'function')){ - return item.bind(elem || obj); + if (is(item, 'function')) { + return item.bind(elem || obj); } - return item; + return item; } } return false; } - function testPropsAll( prop, prefixed, elem ) { + function testPropsAll(prop, prefixed, elem) { - var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1), - props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' '); + var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1), + props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' '); - if(is(prefixed, "string") || is(prefixed, "undefined")) { - return testProps(props, prefixed); + if (is(prefixed, "string") || is(prefixed, "undefined")) { + return testProps(props, prefixed); - } else { - props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' '); - return testDOMProps(props, prefixed, elem); + } else { + props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' '); + return testDOMProps(props, prefixed, elem); } - } tests['flexbox'] = function() { - return testPropsAll('flexWrap'); + } + + tests['flexbox'] = function () { + return testPropsAll('flexWrap'); }; - tests['flexboxlegacy'] = function() { + tests['flexboxlegacy'] = function () { return testPropsAll('boxDirection'); }; - tests['canvas'] = function() { + tests['canvas'] = function () { var elem = document.createElement('canvas'); return !!(elem.getContext && elem.getContext('2d')); }; - tests['canvastext'] = function() { + tests['canvastext'] = function () { return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function')); }; - - tests['webgl'] = function() { + tests['webgl'] = function () { return !!window.WebGLRenderingContext; }; - tests['touch'] = function() { + tests['touch'] = function () { var bool; - if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) { - bool = true; + if (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) { + bool = true; } else { - injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) { - bool = node.offsetTop === 9; - }); + injectElementWithStyles(['@media (', prefixes.join('touch-enabled),('), mod, ')', '{#modernizr{top:9px;position:absolute}}'].join(''), function (node) { + bool = node.offsetTop === 9; + }); } return bool; }; - - tests['geolocation'] = function() { + tests['geolocation'] = function () { return 'geolocation' in navigator; }; - tests['postmessage'] = function() { - return !!window.postMessage; + tests['postmessage'] = function () { + return !!window.postMessage; }; - tests['websqldatabase'] = function() { - return !!window.openDatabase; + tests['websqldatabase'] = function () { + return !!window.openDatabase; }; - tests['indexedDB'] = function() { - return !!testPropsAll("indexedDB", window); + tests['indexedDB'] = function () { + return !!testPropsAll("indexedDB", window); }; - tests['hashchange'] = function() { - return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7); + tests['hashchange'] = function () { + return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7); }; - tests['history'] = function() { - return !!(window.history && history.pushState); + tests['history'] = function () { + return !!(window.history && history.pushState); }; - tests['draganddrop'] = function() { + tests['draganddrop'] = function () { var div = document.createElement('div'); return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div); }; - tests['websockets'] = function() { + tests['websockets'] = function () { return 'WebSocket' in window || 'MozWebSocket' in window; }; - tests['rgba'] = function() { + tests['rgba'] = function () { setCss('background-color:rgba(150,255,150,.5)'); return contains(mStyle.backgroundColor, 'rgba'); }; - tests['hsla'] = function() { - setCss('background-color:hsla(120,40%,100%,.5)'); + tests['hsla'] = function () { + setCss('background-color:hsla(120,40%,100%,.5)'); return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla'); }; - tests['multiplebgs'] = function() { - setCss('background:url(https://),url(https://),red url(https://)'); + tests['multiplebgs'] = function () { + setCss('background:url(https://),url(https://),red url(https://)'); - return (/(url\s*\(.*?){3}/).test(mStyle.background); - }; tests['backgroundsize'] = function() { + return (/(url\s*\(.*?){3}/).test(mStyle.background); + }; + tests['backgroundsize'] = function () { return testPropsAll('backgroundSize'); }; - tests['borderimage'] = function() { + tests['borderimage'] = function () { return testPropsAll('borderImage'); }; - - tests['borderradius'] = function() { + tests['borderradius'] = function () { return testPropsAll('borderRadius'); }; - tests['boxshadow'] = function() { + tests['boxshadow'] = function () { return testPropsAll('boxShadow'); }; - tests['textshadow'] = function() { + tests['textshadow'] = function () { return document.createElement('div').style.textShadow === ''; }; - tests['opacity'] = function() { - setCssAll('opacity:.55'); + tests['opacity'] = function () { + setCssAll('opacity:.55'); - return (/^0.55$/).test(mStyle.opacity); + return (/^0.55$/).test(mStyle.opacity); }; - tests['cssanimations'] = function() { + tests['cssanimations'] = function () { return testPropsAll('animationName'); }; - tests['csscolumns'] = function() { + tests['csscolumns'] = function () { return testPropsAll('columnCount'); }; - tests['cssgradients'] = function() { + tests['cssgradients'] = function () { var str1 = 'background-image:', str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));', str3 = 'linear-gradient(left top,#9f9, white);'; setCss( - (str1 + '-webkit- '.split(' ').join(str2 + str1) + - prefixes.join(str3 + str1)).slice(0, -str1.length) + (str1 + '-webkit- '.split(' ').join(str2 + str1) + + prefixes.join(str3 + str1)).slice(0, -str1.length) ); return contains(mStyle.backgroundImage, 'gradient'); }; - tests['cssreflections'] = function() { + tests['cssreflections'] = function () { return testPropsAll('boxReflect'); }; - tests['csstransforms'] = function() { + tests['csstransforms'] = function () { return !!testPropsAll('transform'); }; - tests['csstransforms3d'] = function() { + tests['csstransforms3d'] = function () { var ret = !!testPropsAll('perspective'); - if ( ret && 'webkitPerspective' in docElement.style ) { + if (ret && 'webkitPerspective' in docElement.style) { - injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) { - ret = node.offsetLeft === 9 && node.offsetHeight === 3; - }); + injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function (node, rule) { + ret = node.offsetLeft === 9 && node.offsetHeight === 3; + }); } return ret; }; - tests['csstransitions'] = function() { + tests['csstransitions'] = function () { return testPropsAll('transition'); }; - - tests['fontface'] = function() { + tests['fontface'] = function () { var bool; - injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) { - var style = document.getElementById('smodernizr'), - sheet = style.sheet || style.styleSheet, - cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : ''; + injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function (node, rule) { + var style = document.getElementById('smodernizr'), + sheet = style.sheet || style.styleSheet, + cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : ''; - bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0; + bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0; }); return bool; }; - tests['generatedcontent'] = function() { + tests['generatedcontent'] = function () { var bool; - injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:"',smile,'";visibility:hidden;font:3px/1 a}'].join(''), function( node ) { - bool = node.offsetHeight >= 3; + injectElementWithStyles(['#', mod, '{font:0/0 a}#', mod, ':after{content:"', smile, '";visibility:hidden;font:3px/1 a}'].join(''), function (node) { + bool = node.offsetHeight >= 3; }); return bool; }; - tests['video'] = function() { + tests['video'] = function () { var elem = document.createElement('video'), bool = false; - try { - if ( bool = !!elem.canPlayType ) { - bool = new Boolean(bool); - bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,''); + try { + if (bool = !!elem.canPlayType) { + bool = new Boolean(bool); + bool.ogg = elem.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, ''); - bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,''); + bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, ''); - bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,''); + bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, ''); } - } catch(e) { } + } catch (e) { + } return bool; }; - tests['audio'] = function() { + tests['audio'] = function () { var elem = document.createElement('audio'), bool = false; try { - if ( bool = !!elem.canPlayType ) { - bool = new Boolean(bool); - bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,''); - bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,''); - - bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,''); - bool.m4a = ( elem.canPlayType('audio/x-m4a;') || - elem.canPlayType('audio/aac;')) .replace(/^no$/,''); + if (bool = !!elem.canPlayType) { + bool = new Boolean(bool); + bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ''); + bool.mp3 = elem.canPlayType('audio/mpeg;').replace(/^no$/, ''); + + bool.wav = elem.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ''); + bool.m4a = ( elem.canPlayType('audio/x-m4a;') || + elem.canPlayType('audio/aac;')).replace(/^no$/, ''); } - } catch(e) { } + } catch (e) { + } return bool; }; - tests['localstorage'] = function() { + tests['localstorage'] = function () { try { localStorage.setItem(mod, mod); localStorage.removeItem(mod); return true; - } catch(e) { + } catch (e) { return false; } }; - tests['sessionstorage'] = function() { + tests['sessionstorage'] = function () { try { sessionStorage.setItem(mod, mod); sessionStorage.removeItem(mod); return true; - } catch(e) { + } catch (e) { return false; } }; - tests['webworkers'] = function() { + tests['webworkers'] = function () { return !!window.Worker; }; - tests['applicationcache'] = function() { + tests['applicationcache'] = function () { return !!window.applicationCache; }; - tests['svg'] = function() { + tests['svg'] = function () { return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect; }; - tests['inlinesvg'] = function() { - var div = document.createElement('div'); - div.innerHTML = ''; - return (div.firstChild && div.firstChild.namespaceURI) == ns.svg; + tests['inlinesvg'] = function () { + var div = document.createElement('div'); + div.innerHTML = ''; + return (div.firstChild && div.firstChild.namespaceURI) == ns.svg; }; - tests['smil'] = function() { + tests['smil'] = function () { return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate'))); }; - tests['svgclippaths'] = function() { + tests['svgclippaths'] = function () { return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath'))); }; function webforms() { - Modernizr['input'] = (function( props ) { - for ( var i = 0, len = props.length; i < len; i++ ) { - attrs[ props[i] ] = !!(props[i] in inputElem); + Modernizr['input'] = (function (props) { + for (var i = 0, len = props.length; i < len; i++) { + attrs[props[i]] = !!(props[i] in inputElem); } - if (attrs.list){ - attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement); + if (attrs.list) { + attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement); } return attrs; })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' ')); - Modernizr['inputtypes'] = (function(props) { + Modernizr['inputtypes'] = (function (props) { - for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) { + for (var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++) { inputElem.setAttribute('type', inputElemType = props[i]); bool = inputElem.type !== 'text'; - if ( bool ) { + if (bool) { - inputElem.value = smile; + inputElem.value = smile; inputElem.style.cssText = 'position:absolute;visibility:hidden;'; - if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) { + if (/^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined) { - docElement.appendChild(inputElem); - defaultView = document.defaultView; + docElement.appendChild(inputElem); + defaultView = document.defaultView; - bool = defaultView.getComputedStyle && - defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' && - (inputElem.offsetHeight !== 0); + bool = defaultView.getComputedStyle && + defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' && + (inputElem.offsetHeight !== 0); - docElement.removeChild(inputElem); + docElement.removeChild(inputElem); - } else if ( /^(search|tel)$/.test(inputElemType) ){ - } else if ( /^(url|email)$/.test(inputElemType) ) { - bool = inputElem.checkValidity && inputElem.checkValidity() === false; + } else if (/^(search|tel)$/.test(inputElemType)) { + } else if (/^(url|email)$/.test(inputElemType)) { + bool = inputElem.checkValidity && inputElem.checkValidity() === false; } else { - bool = inputElem.value != smile; + bool = inputElem.value != smile; } } - inputs[ props[i] ] = !!bool; + inputs[props[i]] = !!bool; } return inputs; })('search tel url email datetime date month week time datetime-local number range color'.split(' ')); - } - for ( var feature in tests ) { - if ( hasOwnProp(tests, feature) ) { - featureName = feature.toLowerCase(); + } + + for (var feature in tests) { + if (hasOwnProp(tests, feature)) { + featureName = feature.toLowerCase(); Modernizr[featureName] = tests[feature](); classes.push((Modernizr[featureName] ? '' : 'no-') + featureName); @@ -604,38 +606,39 @@ window.Modernizr = (function( window, document, undefined ) { Modernizr.input || webforms(); - Modernizr.addTest = function ( feature, test ) { - if ( typeof feature == 'object' ) { - for ( var key in feature ) { - if ( hasOwnProp( feature, key ) ) { - Modernizr.addTest( key, feature[ key ] ); - } - } - } else { + 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(); + feature = feature.toLowerCase(); - if ( Modernizr[feature] !== undefined ) { - return Modernizr; - } + if (Modernizr[feature] !== undefined) { + return Modernizr; + } - test = typeof test == 'function' ? test() : test; + test = typeof test == 'function' ? test() : test; - if (typeof enableClasses !== "undefined" && enableClasses) { - docElement.className += ' ' + (test ? '' : 'no-') + feature; - } - Modernizr[feature] = test; + if (typeof enableClasses !== "undefined" && enableClasses) { + docElement.className += ' ' + (test ? '' : 'no-') + feature; + } + Modernizr[feature] = test; - } + } - return Modernizr; - }; + return Modernizr; + }; setCss(''); modElem = inputElem = null; - ;(function(window, document) { + ; + (function (window, document) { var options = window.html5 || {}; var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i; @@ -652,134 +655,139 @@ window.Modernizr = (function( window, document, undefined ) { var supportsUnknownElements; - (function() { - try { - var a = document.createElement('a'); - a.innerHTML = ''; - supportsHtml5Styles = ('hidden' in a); + (function () { + try { + var a = document.createElement('a'); + a.innerHTML = ''; + supportsHtml5Styles = ('hidden' in a); - supportsUnknownElements = a.childNodes.length == 1 || (function() { + supportsUnknownElements = a.childNodes.length == 1 || (function () { (document.createElement)('a'); - var frag = document.createDocumentFragment(); - return ( - typeof frag.cloneNode == 'undefined' || - typeof frag.createDocumentFragment == 'undefined' || - typeof frag.createElement == 'undefined' - ); - }()); - } catch(e) { - supportsHtml5Styles = true; - supportsUnknownElements = true; - } + var frag = document.createDocumentFragment(); + return ( + typeof frag.cloneNode == 'undefined' || + typeof frag.createDocumentFragment == 'undefined' || + typeof frag.createElement == 'undefined' + ); + }()); + } catch (e) { + supportsHtml5Styles = true; + supportsUnknownElements = true; + } - }()); function addStyleSheet(ownerDocument, cssText) { - var p = ownerDocument.createElement('p'), - parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; + }()); + function addStyleSheet(ownerDocument, cssText) { + var p = ownerDocument.createElement('p'), + parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; - p.innerHTML = 'x'; - return parent.insertBefore(p.lastChild, parent.firstChild); - } + p.innerHTML = 'x'; + return parent.insertBefore(p.lastChild, parent.firstChild); + } function getElements() { - var elements = html5.elements; - return typeof elements == 'string' ? elements.split(' ') : elements; - } - - function getExpandoData(ownerDocument) { - var data = expandoData[ownerDocument[expando]]; - if (!data) { - data = {}; - expanID++; - ownerDocument[expando] = expanID; - expandoData[expanID] = data; + var elements = html5.elements; + return typeof elements == 'string' ? elements.split(' ') : elements; } - return data; - } - function createElement(nodeName, ownerDocument, data){ - if (!ownerDocument) { - ownerDocument = document; - } - if(supportsUnknownElements){ - return ownerDocument.createElement(nodeName); - } - if (!data) { - data = getExpandoData(ownerDocument); + function getExpandoData(ownerDocument) { + var data = expandoData[ownerDocument[expando]]; + if (!data) { + data = {}; + expanID++; + ownerDocument[expando] = expanID; + expandoData[expanID] = data; + } + return data; } - var node; - if (data.cache[nodeName]) { - node = data.cache[nodeName].cloneNode(); - } else if (saveClones.test(nodeName)) { - node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); - } else { - node = data.createElem(nodeName); - } + function createElement(nodeName, ownerDocument, data) { + if (!ownerDocument) { + ownerDocument = document; + } + if (supportsUnknownElements) { + return ownerDocument.createElement(nodeName); + } + if (!data) { + data = getExpandoData(ownerDocument); + } + var node; - return node.canHaveChildren && !reSkip.test(nodeName) ? data.frag.appendChild(node) : node; - } + if (data.cache[nodeName]) { + node = data.cache[nodeName].cloneNode(); + } else if (saveClones.test(nodeName)) { + node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); + } else { + node = data.createElem(nodeName); + } - function createDocumentFragment(ownerDocument, data){ - if (!ownerDocument) { - ownerDocument = document; + return node.canHaveChildren && !reSkip.test(nodeName) ? data.frag.appendChild(node) : node; } - if(supportsUnknownElements){ - return ownerDocument.createDocumentFragment(); - } - data = data || getExpandoData(ownerDocument); - var clone = data.frag.cloneNode(), - i = 0, - elems = getElements(), - l = elems.length; - for(;i