{"version":3,"sources":["modernizr2.8.3.custom.js"],"names":["window","Modernizr","document","undefined","setCss","str","mStyle","cssText","is","obj","type","contains","substr","indexOf","testProps","props","prefixed","i","prop","testDOMProps","elem","item","bind","testPropsAll","ucProp","charAt","toUpperCase","slice","cssomPrefixes","join","split","webforms","len","length","attrs","inputElem","list","createElement","HTMLDataListElement","featureName","hasOwnProp","version","enableClasses","docElement","documentElement","mod","modElem","style","smile","prefixes","toString","omPrefixes","domPrefixes","toLowerCase","tests","classes","injectElementWithStyles","rule","callback","nodes","testnames","ret","node","docOverflow","div","body","fakeBody","parseInt","id","appendChild","innerHTML","background","overflow","parentNode","removeChild","_hasOwnProperty","hasOwnProperty","call","object","property","constructor","prototype","Function","that","target","this","TypeError","args","arguments","bound","F","self","result","apply","concat","Object","str1","str2","str3","backgroundImage","bool","offsetHeight","localStorage","setItem","removeItem","e","sessionStorage","feature","push","input","addTest","test","key","className","_version","_prefixes","_domPrefixes","_cssomPrefixes","testProp","testAllProps","testStyles","replace","addStyleSheet","ownerDocument","p","parent","getElementsByTagName","insertBefore","lastChild","firstChild","getElements","elements","html5","getExpandoData","data","expandoData","expando","expanID","nodeName","supportsUnknownElements","cache","cloneNode","saveClones","createElem","canHaveChildren","reSkip","tagUrn","frag","createDocumentFragment","clone","elems","l","shivMethods","createFrag","shivDocument","shivCSS","supportsHtml5Styles","hasCSS","addWrappers","index","reElements","RegExp","applyElement","createWrapper","element","attributes","wrapper","shivNamespace","specified","setAttribute","nodeValue","shivCssText","pair","parts","replacement","removeWrappers","wrappers","removeNode","shivPrint","removeSheet","clearTimeout","_removeSheetTimer","shivedSheet","namespaces","ownerWindow","parentWindow","supportsShivableSheets","printShived","add","attachEvent","imports","sheet","collection","styleSheets","sheets","Array","pop","disabled","reMedia","media","er","reverse","setTimeout","options","a","childNodes","docEl"],"mappings":"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","file":"modernizr.min.js","sourcesContent":["/* Modernizr 2.8.3 (Custom Build) | MIT & BSD\n * Build: http://modernizr.com/download/#-borderradius-boxshadow-cssanimations-generatedcontent-cssgradients-csstransforms-input-localstorage-sessionstorage-printshiv-cssclasses-teststyles-testprop-testallprops-prefixes-domprefixes\n */\n;\n\n\n\nwindow.Modernizr = (function( window, document, undefined ) {\n\n var version = '2.8.3',\n\n Modernizr = {},\n\n enableClasses = true,\n\n docElement = document.documentElement,\n\n mod = 'modernizr',\n modElem = document.createElement(mod),\n mStyle = modElem.style,\n\n inputElem = document.createElement('input') ,\n\n smile = ':)',\n\n toString = {}.toString,\n\n prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),\n\n\n\n omPrefixes = 'Webkit Moz O ms',\n\n cssomPrefixes = omPrefixes.split(' '),\n\n domPrefixes = omPrefixes.toLowerCase().split(' '),\n\n\n tests = {},\n inputs = {},\n attrs = {},\n\n classes = [],\n\n slice = classes.slice,\n\n featureName, \n\n\n injectElementWithStyles = function( rule, callback, nodes, testnames ) {\n\n var style, ret, node, docOverflow,\n div = document.createElement('div'),\n body = document.body,\n fakeBody = body || document.createElement('body');\n\n if ( parseInt(nodes, 10) ) {\n while ( nodes-- ) {\n node = document.createElement('div');\n node.id = testnames ? testnames[nodes] : mod + (nodes + 1);\n div.appendChild(node);\n }\n }\n\n style = ['',''].join('');\n div.id = mod;\n (body ? div : fakeBody).innerHTML += style;\n fakeBody.appendChild(div);\n if ( !body ) {\n fakeBody.style.background = '';\n fakeBody.style.overflow = 'hidden';\n docOverflow = docElement.style.overflow;\n docElement.style.overflow = 'hidden';\n docElement.appendChild(fakeBody);\n }\n\n ret = callback(div, rule);\n if ( !body ) {\n fakeBody.parentNode.removeChild(fakeBody);\n docElement.style.overflow = docOverflow;\n } else {\n div.parentNode.removeChild(div);\n }\n\n return !!ret;\n\n },\n _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;\n\n if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {\n hasOwnProp = function (object, property) {\n return _hasOwnProperty.call(object, property);\n };\n }\n else {\n hasOwnProp = function (object, property) { \n return ((property in object) && is(object.constructor.prototype[property], 'undefined'));\n };\n }\n\n\n if (!Function.prototype.bind) {\n Function.prototype.bind = function bind(that) {\n\n var target = this;\n\n if (typeof target != \"function\") {\n throw new TypeError();\n }\n\n var args = slice.call(arguments, 1),\n bound = function () {\n\n if (this instanceof bound) {\n\n var F = function(){};\n F.prototype = target.prototype;\n var self = new F();\n\n var result = target.apply(\n self,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return self;\n\n } else {\n\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n\n }\n\n };\n\n return bound;\n };\n }\n\n function setCss( str ) {\n mStyle.cssText = str;\n }\n\n function setCssAll( str1, str2 ) {\n return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));\n }\n\n function is( obj, type ) {\n return typeof obj === type;\n }\n\n function contains( str, substr ) {\n return !!~('' + str).indexOf(substr);\n }\n\n function testProps( props, prefixed ) {\n for ( var i in props ) {\n var prop = props[i];\n if ( !contains(prop, \"-\") && mStyle[prop] !== undefined ) {\n return prefixed == 'pfx' ? prop : true;\n }\n }\n return false;\n }\n\n function testDOMProps( props, obj, elem ) {\n for ( var i in props ) {\n var item = obj[props[i]];\n if ( item !== undefined) {\n\n if (elem === false) return props[i];\n\n if (is(item, 'function')){\n return item.bind(elem || obj);\n }\n\n return item;\n }\n }\n return false;\n }\n\n function testPropsAll( prop, prefixed, elem ) {\n\n var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),\n props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');\n\n if(is(prefixed, \"string\") || is(prefixed, \"undefined\")) {\n return testProps(props, prefixed);\n\n } else {\n props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');\n return testDOMProps(props, prefixed, elem);\n }\n }\n\n\n\n tests['borderradius'] = function() {\n return testPropsAll('borderRadius');\n };\n\n tests['boxshadow'] = function() {\n return testPropsAll('boxShadow');\n };\n tests['cssanimations'] = function() {\n return testPropsAll('animationName');\n }; tests['cssgradients'] = function() {\n var str1 = 'background-image:',\n str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',\n str3 = 'linear-gradient(left top,#9f9, white);';\n\n setCss(\n (str1 + '-webkit- '.split(' ').join(str2 + str1) +\n prefixes.join(str3 + str1)).slice(0, -str1.length)\n );\n\n return contains(mStyle.backgroundImage, 'gradient');\n }; tests['csstransforms'] = function() {\n return !!testPropsAll('transform');\n };\n\n\n tests['generatedcontent'] = function() {\n var bool;\n\n injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:\"',smile,'\";visibility:hidden;font:3px/1 a}'].join(''), function( node ) {\n bool = node.offsetHeight >= 3;\n });\n\n return bool;\n };\n\n\n\n tests['localstorage'] = function() {\n try {\n localStorage.setItem(mod, mod);\n localStorage.removeItem(mod);\n return true;\n } catch(e) {\n return false;\n }\n };\n\n tests['sessionstorage'] = function() {\n try {\n sessionStorage.setItem(mod, mod);\n sessionStorage.removeItem(mod);\n return true;\n } catch(e) {\n return false;\n }\n };\n\n function webforms() {\n Modernizr['input'] = (function( props ) {\n for ( var i = 0, len = props.length; i < len; i++ ) {\n attrs[ props[i] ] = !!(props[i] in inputElem);\n }\n if (attrs.list){\n attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);\n }\n return attrs;\n })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));\n }\n for ( var feature in tests ) {\n if ( hasOwnProp(tests, feature) ) {\n featureName = feature.toLowerCase();\n Modernizr[featureName] = tests[feature]();\n\n classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);\n }\n }\n\n Modernizr.input || webforms();\n\n\n Modernizr.addTest = function ( feature, test ) {\n if ( typeof feature == 'object' ) {\n for ( var key in feature ) {\n if ( hasOwnProp( feature, key ) ) {\n Modernizr.addTest( key, feature[ key ] );\n }\n }\n } else {\n\n feature = feature.toLowerCase();\n\n if ( Modernizr[feature] !== undefined ) {\n return Modernizr;\n }\n\n test = typeof test == 'function' ? test() : test;\n\n if (typeof enableClasses !== \"undefined\" && enableClasses) {\n docElement.className += ' ' + (test ? '' : 'no-') + feature;\n }\n Modernizr[feature] = test;\n\n }\n\n return Modernizr; \n };\n\n\n setCss('');\n modElem = inputElem = null;\n\n\n Modernizr._version = version;\n\n Modernizr._prefixes = prefixes;\n Modernizr._domPrefixes = domPrefixes;\n Modernizr._cssomPrefixes = cssomPrefixes;\n\n\n\n Modernizr.testProp = function(prop){\n return testProps([prop]);\n };\n\n Modernizr.testAllProps = testPropsAll;\n\n\n Modernizr.testStyles = injectElementWithStyles; docElement.className = docElement.className.replace(/(^|\\s)no-js(\\s|$)/, '$1$2') +\n\n (enableClasses ? ' js ' + classes.join(' ') : '');\n\n return Modernizr;\n\n})(this, this.document);\n/**\n* @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed\n*/\n;(function(window, document) {\n/*jshint evil:true */\n /** version */\n var version = '3.7.0';\n\n /** Preset options */\n var options = window.html5 || {};\n\n /** Used to skip problem elements */\n var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;\n\n /** Not all elements can be cloned in IE **/\n var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;\n\n /** Detect whether the browser supports default html5 styles */\n var supportsHtml5Styles;\n\n /** Name of the expando, to work with multiple documents or to re-shiv one document */\n var expando = '_html5shiv';\n\n /** The id for the the documents expando */\n var expanID = 0;\n\n /** Cached data for each document */\n var expandoData = {};\n\n /** Detect whether the browser supports unknown elements */\n var supportsUnknownElements;\n\n (function() {\n try {\n var a = document.createElement('a');\n a.innerHTML = '';\n //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles\n supportsHtml5Styles = ('hidden' in a);\n\n supportsUnknownElements = a.childNodes.length == 1 || (function() {\n // assign a false positive if unable to shiv\n (document.createElement)('a');\n var frag = document.createDocumentFragment();\n return (\n typeof frag.cloneNode == 'undefined' ||\n typeof frag.createDocumentFragment == 'undefined' ||\n typeof frag.createElement == 'undefined'\n );\n }());\n } catch(e) {\n // assign a false positive if detection fails => unable to shiv\n supportsHtml5Styles = true;\n supportsUnknownElements = true;\n }\n\n }());\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Creates a style sheet with the given CSS text and adds it to the document.\n * @private\n * @param {Document} ownerDocument The document.\n * @param {String} cssText The CSS text.\n * @returns {StyleSheet} The style element.\n */\n function addStyleSheet(ownerDocument, cssText) {\n var p = ownerDocument.createElement('p'),\n parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;\n\n p.innerHTML = 'x';\n return parent.insertBefore(p.lastChild, parent.firstChild);\n }\n\n /**\n * Returns the value of `html5.elements` as an array.\n * @private\n * @returns {Array} An array of shived element node names.\n */\n function getElements() {\n var elements = html5.elements;\n return typeof elements == 'string' ? elements.split(' ') : elements;\n }\n\n /**\n * Returns the data associated to the given document\n * @private\n * @param {Document} ownerDocument The document.\n * @returns {Object} An object of data.\n */\n function getExpandoData(ownerDocument) {\n var data = expandoData[ownerDocument[expando]];\n if (!data) {\n data = {};\n expanID++;\n ownerDocument[expando] = expanID;\n expandoData[expanID] = data;\n }\n return data;\n }\n\n /**\n * returns a shived element for the given nodeName and document\n * @memberOf html5\n * @param {String} nodeName name of the element\n * @param {Document} ownerDocument The context document.\n * @returns {Object} The shived element.\n */\n function createElement(nodeName, ownerDocument, data){\n if (!ownerDocument) {\n ownerDocument = document;\n }\n if(supportsUnknownElements){\n return ownerDocument.createElement(nodeName);\n }\n if (!data) {\n data = getExpandoData(ownerDocument);\n }\n var node;\n\n if (data.cache[nodeName]) {\n node = data.cache[nodeName].cloneNode();\n } else if (saveClones.test(nodeName)) {\n node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();\n } else {\n node = data.createElem(nodeName);\n }\n\n // Avoid adding some elements to fragments in IE < 9 because\n // * Attributes like `name` or `type` cannot be set/changed once an element\n // is inserted into a document/fragment\n // * Link elements with `src` attributes that are inaccessible, as with\n // a 403 response, will cause the tab/window to crash\n // * Script elements appended to fragments will execute when their `src`\n // or `text` property is set\n return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;\n }\n\n /**\n * returns a shived DocumentFragment for the given document\n * @memberOf html5\n * @param {Document} ownerDocument The context document.\n * @returns {Object} The shived DocumentFragment.\n */\n function createDocumentFragment(ownerDocument, data){\n if (!ownerDocument) {\n ownerDocument = document;\n }\n if(supportsUnknownElements){\n return ownerDocument.createDocumentFragment();\n }\n data = data || getExpandoData(ownerDocument);\n var clone = data.frag.cloneNode(),\n i = 0,\n elems = getElements(),\n l = elems.length;\n for(;i+~])(' + getElements().join('|') + ')(?=[[\\\\s,>+~#.:]|$)', 'gi'),\n replacement = '$1' + shivNamespace + '\\\\:$2';\n\n while (index--) {\n pair = parts[index] = parts[index].split('}');\n pair[pair.length - 1] = pair[pair.length - 1].replace(reElements, replacement);\n parts[index] = pair.join('}');\n }\n return parts.join('{');\n }\n\n /**\n * Removes the given wrappers, leaving the original elements.\n * @private\n * @params {Array} wrappers An array of printable wrappers.\n */\n function removeWrappers(wrappers) {\n var index = wrappers.length;\n while (index--) {\n wrappers[index].removeNode();\n }\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Shivs the given document for print.\n * @memberOf html5\n * @param {Document} ownerDocument The document to shiv.\n * @returns {Document} The shived document.\n */\n function shivPrint(ownerDocument) {\n var shivedSheet,\n wrappers,\n data = getExpandoData(ownerDocument),\n namespaces = ownerDocument.namespaces,\n ownerWindow = ownerDocument.parentWindow;\n\n if (!supportsShivableSheets || ownerDocument.printShived) {\n return ownerDocument;\n }\n if (typeof namespaces[shivNamespace] == 'undefined') {\n namespaces.add(shivNamespace);\n }\n\n function removeSheet() {\n clearTimeout(data._removeSheetTimer);\n if (shivedSheet) {\n shivedSheet.removeNode(true);\n }\n shivedSheet= null;\n }\n\n ownerWindow.attachEvent('onbeforeprint', function() {\n\n removeSheet();\n\n var imports,\n length,\n sheet,\n collection = ownerDocument.styleSheets,\n cssText = [],\n index = collection.length,\n sheets = Array(index);\n\n // convert styleSheets collection to an array\n while (index--) {\n sheets[index] = collection[index];\n }\n // concat all style sheet CSS text\n while ((sheet = sheets.pop())) {\n // IE does not enforce a same origin policy for external style sheets...\n // but has trouble with some dynamically created stylesheets\n if (!sheet.disabled && reMedia.test(sheet.media)) {\n\n try {\n imports = sheet.imports;\n length = imports.length;\n } catch(er){\n length = 0;\n }\n\n for (index = 0; index < length; index++) {\n sheets.push(imports[index]);\n }\n\n try {\n cssText.push(sheet.cssText);\n } catch(er){}\n }\n }\n\n // wrap all HTML5 elements with printable elements and add the shived style sheet\n cssText = shivCssText(cssText.reverse().join(''));\n wrappers = addWrappers(ownerDocument);\n shivedSheet = addStyleSheet(ownerDocument, cssText);\n\n });\n\n ownerWindow.attachEvent('onafterprint', function() {\n // remove wrappers, leaving the original elements, and remove the shived style sheet\n removeWrappers(wrappers);\n clearTimeout(data._removeSheetTimer);\n data._removeSheetTimer = setTimeout(removeSheet, 500);\n });\n\n ownerDocument.printShived = true;\n return ownerDocument;\n }\n\n /*--------------------------------------------------------------------------*/\n\n // expose API\n html5.type += ' print';\n html5.shivPrint = shivPrint;\n\n // shiv for print\n shivPrint(document);\n\n}(this, document));\n;"]}