]> _ Git - fluidbook-html5.git/commitdiff
(no commit message)
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 30 Jun 2015 13:27:54 +0000 (13:27 +0000)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 30 Jun 2015 13:27:54 +0000 (13:27 +0000)
js/libs/fluidbook/fluidbook.l10n.js
js/libs/fluidbook/fluidbook.nav.js
js/libs/modernizr/modernizr.js
js/main.js

index dd070f1b2e88305ef065935a41d0cda4a31a784d..dd48a971e542c73d0a9c214d26c414e38c80e52e 100644 (file)
@@ -35,7 +35,7 @@ FluidbookL10N.prototype = {
     initMultilang: function () {
         var forceLocales;
         try {
-            forceLocales = window.sessionStorage.getItem('locales');
+            forceLocales = window.localStorage.getItem('locales');
         } catch (err) {
 
         }
index 9f4e256cf86892aff0afe138aff5b97f16c52962..d3236edc1069aa7a79f9425d63338e72c3e715f5 100644 (file)
@@ -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) {
 
index 61c8a90f77d6f8c9116bf2581748347489b1be55..0a74120585b09150cf0899cb4b184d558b5264ac 100644 (file)
 ;
 
 
-
-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 = ['&#173;','<style id="s', mod, '">', rule, '</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 = ['&#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);
-      }
+                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 = '<svg/>';
-      return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;
+    tests['inlinesvg'] = function () {
+        var div = document.createElement('div');
+        div.innerHTML = '<svg/>';
+        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 = '<xyz></xyz>';
-                    supportsHtml5Styles = ('hidden' in a);
+        (function () {
+            try {
+                var a = document.createElement('a');
+                a.innerHTML = '<xyz></xyz>';
+                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<style>' + cssText + '</style>';
-        return parent.insertBefore(p.lastChild, parent.firstChild);
-      }
+            p.innerHTML = 'x<style>' + cssText + '</style>';
+            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<l;i++){
-            clone.createElement(elems[i]);
+
+        function createDocumentFragment(ownerDocument, data) {
+            if (!ownerDocument) {
+                ownerDocument = document;
+            }
+            if (supportsUnknownElements) {
+                return ownerDocument.createDocumentFragment();
+            }
+            data = data || getExpandoData(ownerDocument);
+            var clone = data.frag.cloneNode(),
+                i = 0,
+                elems = getElements(),
+                l = elems.length;
+            for (; i < l; i++) {
+                clone.createElement(elems[i]);
+            }
+            return clone;
         }
-        return clone;
-      }
 
         function shivMethods(ownerDocument, data) {
-        if (!data.cache) {
-            data.cache = {};
-            data.createElem = ownerDocument.createElement;
-            data.createFrag = ownerDocument.createDocumentFragment;
-            data.frag = data.createFrag();
-        }
+            if (!data.cache) {
+                data.cache = {};
+                data.createElem = ownerDocument.createElement;
+                data.createFrag = ownerDocument.createDocumentFragment;
+                data.frag = data.createFrag();
+            }
 
 
-        ownerDocument.createElement = function(nodeName) {
+            ownerDocument.createElement = function (nodeName) {
                 if (!html5.shivMethods) {
-              return data.createElem(nodeName);
-          }
-          return createElement(nodeName, ownerDocument, data);
-        };
-
-        ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
-          'var n=f.cloneNode(),c=n.createElement;' +
-          'h.shivMethods&&(' +
-                    getElements().join().replace(/\w+/g, function(nodeName) {
-              data.createElem(nodeName);
-              data.frag.createElement(nodeName);
-              return 'c("' + nodeName + '")';
-            }) +
-          ');return n}'
-        )(html5, data.frag);
-      }        function shivDocument(ownerDocument) {
-        if (!ownerDocument) {
-            ownerDocument = document;
+                    return data.createElem(nodeName);
+                }
+                return createElement(nodeName, ownerDocument, data);
+            };
+
+            ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
+                'var n=f.cloneNode(),c=n.createElement;' +
+                'h.shivMethods&&(' +
+                getElements().join().replace(/\w+/g, function (nodeName) {
+                    data.createElem(nodeName);
+                    data.frag.createElement(nodeName);
+                    return 'c("' + nodeName + '")';
+                }) +
+                ');return n}'
+            )(html5, data.frag);
         }
-        var data = getExpandoData(ownerDocument);
 
-        if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
-          data.hasCSS = !!addStyleSheet(ownerDocument,
+        function shivDocument(ownerDocument) {
+            if (!ownerDocument) {
+                ownerDocument = document;
+            }
+            var data = getExpandoData(ownerDocument);
+
+            if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
+                data.hasCSS = !!addStyleSheet(ownerDocument,
                     'article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}' +
                     'mark{background:#FF0;color:#000}'
-          );
-        }
-        if (!supportsUnknownElements) {
-          shivMethods(ownerDocument, data);
+                );
+            }
+            if (!supportsUnknownElements) {
+                shivMethods(ownerDocument, data);
+            }
+            return ownerDocument;
         }
-        return ownerDocument;
-      }        var html5 = {
+
+        var html5 = {
 
             'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video',
 
@@ -796,47 +804,173 @@ window.Modernizr = (function( window, document, undefined ) {
             createElement: createElement,
 
             createDocumentFragment: createDocumentFragment
-      };        window.html5 = html5;
+        };
+        window.html5 = html5;
 
         shivDocument(document);
 
     }(this, document));
 
-    Modernizr._version      = version;
+    Modernizr._version = version;
 
-    Modernizr._prefixes     = prefixes;
-    Modernizr._domPrefixes  = domPrefixes;
-    Modernizr._cssomPrefixes  = cssomPrefixes;
+    Modernizr._prefixes = prefixes;
+    Modernizr._domPrefixes = domPrefixes;
+    Modernizr._cssomPrefixes = cssomPrefixes;
 
-    Modernizr.mq            = testMediaQuery;
+    Modernizr.mq = testMediaQuery;
 
-    Modernizr.hasEvent      = isEventSupported;
+    Modernizr.hasEvent = isEventSupported;
 
-    Modernizr.testProp      = function(prop){
+    Modernizr.testProp = function (prop) {
         return testProps([prop]);
     };
 
-    Modernizr.testAllProps  = testPropsAll;
+    Modernizr.testAllProps = testPropsAll;
 
 
-    Modernizr.testStyles    = injectElementWithStyles;
-    Modernizr.prefixed      = function(prop, obj, elem){
-      if(!obj) {
-        return testPropsAll(prop, 'pfx');
-      } else {
+    Modernizr.testStyles = injectElementWithStyles;
+    Modernizr.prefixed = function (prop, obj, elem) {
+        if (!obj) {
+            return testPropsAll(prop, 'pfx');
+        } else {
             return testPropsAll(prop, obj, elem);
-      }
+        }
     };
 
 
     docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
 
-                                                    (enableClasses ? ' js ' + classes.join(' ') : '');
+        (enableClasses ? ' js ' + classes.join(' ') : '');
 
     return Modernizr;
 
 })(this, this.document);
 /*yepnope1.5.4|WTFPL*/
-(function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}})(this,document);
-Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0));};
+(function (a, b, c) {
+    function d(a) {
+        return "[object Function]" == o.call(a)
+    }
+
+    function e(a) {
+        return "string" == typeof a
+    }
+
+    function f() {
+    }
+
+    function g(a) {
+        return !a || "loaded" == a || "complete" == a || "uninitialized" == a
+    }
+
+    function h() {
+        var a = p.shift();
+        q = 1, a ? a.t ? m(function () {
+            ("c" == a.t ? B.injectCss : B.injectJs)(a.s, 0, a.a, a.x, a.e, 1)
+        }, 0) : (a(), h()) : q = 0
+    }
+
+    function i(a, c, d, e, f, i, j) {
+        function k(b) {
+            if (!o && g(l.readyState) && (u.r = o = 1, !q && h(), l.onload = l.onreadystatechange = null, b)) {
+                "img" != a && m(function () {
+                    t.removeChild(l)
+                }, 50);
+                for (var d in y[c])y[c].hasOwnProperty(d) && y[c][d].onload()
+            }
+        }
+
+        var j = j || B.errorTimeout, l = b.createElement(a), o = 0, r = 0, u = {t: d, s: c, e: f, a: i, x: j};
+        1 === y[c] && (r = 1, y[c] = []), "object" == a ? l.data = c : (l.src = c, l.type = a), l.width = l.height = "0", l.onerror = l.onload = l.onreadystatechange = function () {
+            k.call(this, r)
+        }, p.splice(e, 0, u), "img" != a && (r || 2 === y[c] ? (t.insertBefore(l, s ? null : n), m(k, j)) : y[c].push(l))
+    }
+
+    function j(a, b, c, d, f) {
+        return q = 0, b = b || "j", e(a) ? i("c" == b ? v : u, a, b, this.i++, c, d, f) : (p.splice(this.i++, 0, a), 1 == p.length && h()), this
+    }
+
+    function k() {
+        var a = B;
+        return a.loader = {load: j, i: 0}, a
+    }
+
+    var l = b.documentElement, m = a.setTimeout, n = b.getElementsByTagName("script")[0], o = {}.toString, p = [], q = 0, r = "MozAppearance"in l.style, s = r && !!b.createRange().compareNode, t = s ? l : n.parentNode, l = a.opera && "[object Opera]" == o.call(a.opera), l = !!b.attachEvent && !l, u = r ? "object" : l ? "script" : "img", v = l ? "script" : u, w = Array.isArray || function (a) {
+            return "[object Array]" == o.call(a)
+        }, x = [], y = {}, z = {
+        timeout: function (a, b) {
+            return b.length && (a.timeout = b[0]), a
+        }
+    }, A, B;
+    B = function (a) {
+        function b(a) {
+            var a = a.split("!"), b = x.length, c = a.pop(), d = a.length, c = {
+                url: c,
+                origUrl: c,
+                prefixes: a
+            }, e, f, g;
+            for (f = 0; f < d; f++)g = a[f].split("="), (e = z[g.shift()]) && (c = e(c, g));
+            for (f = 0; f < b; f++)c = x[f](c);
+            return c
+        }
+
+        function g(a, e, f, g, h) {
+            var i = b(a), j = i.autoCallback;
+            i.url.split(".").pop().split("?").shift(), i.bypass || (e && (e = d(e) ? e : e[a] || e[g] || e[a.split("/").pop().split("?")[0]]), i.instead ? i.instead(a, e, f, g, h) : (y[i.url] ? i.noexec = !0 : y[i.url] = 1, f.load(i.url, i.forceCSS || !i.forceJS && "css" == i.url.split(".").pop().split("?").shift() ? "c" : c, i.noexec, i.attrs, i.timeout), (d(e) || d(j)) && f.load(function () {
+                k(), e && e(i.origUrl, h, g), j && j(i.origUrl, h, g), y[i.url] = 2
+            })))
+        }
+
+        function h(a, b) {
+            function c(a, c) {
+                if (a) {
+                    if (e(a))c || (j = function () {
+                        var a = [].slice.call(arguments);
+                        k.apply(this, a), l()
+                    }), g(a, j, b, 0, h); else if (Object(a) === a)for (n in m = function () {
+                        var b = 0, c;
+                        for (c in a)a.hasOwnProperty(c) && b++;
+                        return b
+                    }(), a)a.hasOwnProperty(n) && (!c && !--m && (d(j) ? j = function () {
+                        var a = [].slice.call(arguments);
+                        k.apply(this, a), l()
+                    } : j[n] = function (a) {
+                        return function () {
+                            var b = [].slice.call(arguments);
+                            a && a.apply(this, b), l()
+                        }
+                    }(k[n])), g(a[n], j, b, n, h))
+                } else!c && l()
+            }
+
+            var h = !!a.test, i = a.load || a.both, j = a.callback || f, k = j, l = a.complete || f, m, n;
+            c(h ? a.yep : a.nope, !!i), i && c(i)
+        }
+
+        var i, j, l = this.yepnope.loader;
+        if (e(a))g(a, 0, l, 0); else if (w(a))for (i = 0; i < a.length; i++)j = a[i], e(j) ? g(j, 0, l, 0) : w(j) ? B(j) : Object(j) === j && h(j, l); else Object(a) === a && h(a, l)
+    }, B.addPrefix = function (a, b) {
+        z[a] = b
+    }, B.addFilter = function (a) {
+        x.push(a)
+    }, B.errorTimeout = 1e4, null == b.readyState && b.addEventListener && (b.readyState = "loading", b.addEventListener("DOMContentLoaded", A = function () {
+        b.removeEventListener("DOMContentLoaded", A, 0), b.readyState = "complete"
+    }, 0)), a.yepnope = k(), a.yepnope.executeStack = h, a.yepnope.injectJs = function (a, c, d, e, i, j) {
+        var k = b.createElement("script"), l, o, e = e || B.errorTimeout;
+        k.src = a;
+        for (o in d)k.setAttribute(o, d[o]);
+        c = j ? h : c || f, k.onreadystatechange = k.onload = function () {
+            !l && g(k.readyState) && (l = 1, c(), k.onload = k.onreadystatechange = null)
+        }, m(function () {
+            l || (l = 1, c(1))
+        }, e), i ? k.onload() : n.parentNode.insertBefore(k, n)
+    }, a.yepnope.injectCss = function (a, c, d, e, g, i) {
+        var e = b.createElement("link"), j, c = i ? h : c || f;
+        e.href = a, e.rel = "stylesheet", e.type = "text/css";
+        for (j in d)e.setAttribute(j, d[j]);
+        g || (n.parentNode.insertBefore(e, n), m(c, 0))
+    }
+})(this, document);
+Modernizr.load = function () {
+    yepnope.apply(window, [].slice.call(arguments, 0));
+};
 ;
\ No newline at end of file
index 9954c48edb919eb3b7ddbe336d6aa0475217a3c4..97268adc4ff5aca9ecf0bb999d5cecd0dcb083a4 100644 (file)
@@ -93,7 +93,7 @@ try {
 
         navigator.notification.alert(__('This publication is not available offline. To read it, an internet connection is required'),
             function () {
-                window.location = window.sessionStorage.getItem('apphome');
+                window.location = window.localStorage.getItem('apphome');
             }, __('An internet connection is required'));
     }
 
@@ -117,7 +117,7 @@ try {
 
         var manifest;
 
-        var fsprefix = window.sessionStorage.getItem('galfsprefix');
+        var fsprefix = window.localStorage.getItem('galfsprefix');
 
         PLATFORM = DATAS.phonegap;
 
@@ -344,7 +344,7 @@ try {
                     window.location = getPublicationURL(id);
                 } else {
                     var topmanifest = window.localStorage.getItem('topmanifest');
-                    window.gallocale = new GameAssetLoader(json_parse(topmanifest, 'topmanifest'), window.sessionStorage.getItem('galfsprefix'));
+                    window.gallocale = new GameAssetLoader(json_parse(topmanifest, 'topmanifest'), window.localStorage.getItem('galfsprefix'));
                     window.gallocale.init(function () {
                         window.gallocale.downloadAndCall('p_' + id, function () {
                             window.location = getPublicationURL(id);