2014-03-17 04:35:58 -04:00
/ * M o d e r n i z r 2 . 7 . 1 ( C u s t o m B u i l d ) | M I T & B S D
* Build : http : //modernizr.com/download/#-shiv-cssclasses
* /
;
2011-06-12 01:32:01 -04:00
2014-03-17 04:35:58 -04:00
window . Modernizr = ( function ( window , document , undefined ) {
var version = '2.7.1' ,
Modernizr = { } ,
enableClasses = true ,
docElement = document . documentElement ,
mod = 'modernizr' ,
modElem = document . createElement ( mod ) ,
mStyle = modElem . style ,
inputElem ,
toString = { } . toString , tests = { } ,
inputs = { } ,
attrs = { } ,
classes = [ ] ,
slice = classes . slice ,
featureName ,
_hasOwnProperty = ( { } ) . hasOwnProperty , hasOwnProp ;
if ( ! is ( _hasOwnProperty , 'undefined' ) && ! is ( _hasOwnProperty . call , 'undefined' ) ) {
hasOwnProp = function ( object , property ) {
return _hasOwnProperty . call ( object , property ) ;
} ;
}
else {
hasOwnProp = function ( object , property ) {
return ( ( property in object ) && is ( object . constructor . prototype [ property ] , 'undefined' ) ) ;
} ;
}
if ( ! Function . prototype . bind ) {
Function . prototype . bind = function bind ( that ) {
var target = this ;
if ( typeof target != "function" ) {
throw new TypeError ( ) ;
}
var args = slice . call ( arguments , 1 ) ,
bound = function ( ) {
if ( this instanceof bound ) {
var F = function ( ) { } ;
F . prototype = target . prototype ;
var self = new F ( ) ;
var result = target . apply (
self ,
args . concat ( slice . call ( arguments ) )
) ;
if ( Object ( result ) === result ) {
return result ;
}
return self ;
} else {
return target . apply (
that ,
args . concat ( slice . call ( arguments ) )
) ;
}
} ;
return bound ;
} ;
}
function setCss ( str ) {
mStyle . cssText = str ;
}
function setCssAll ( str1 , str2 ) {
return setCss ( prefixes . join ( str1 + ';' ) + ( str2 || '' ) ) ;
}
function is ( obj , type ) {
return typeof obj === type ;
}
function contains ( str , substr ) {
return ! ! ~ ( '' + str ) . indexOf ( substr ) ;
}
function testDOMProps ( props , obj , elem ) {
for ( var i in props ) {
var item = obj [ props [ i ] ] ;
if ( item !== undefined ) {
if ( elem === false ) return props [ i ] ;
if ( is ( item , 'function' ) ) {
return item . bind ( elem || obj ) ;
}
return item ;
}
}
return false ;
}
for ( var feature in tests ) {
if ( hasOwnProp ( tests , feature ) ) {
featureName = feature . toLowerCase ( ) ;
Modernizr [ featureName ] = tests [ feature ] ( ) ;
classes . push ( ( Modernizr [ featureName ] ? '' : 'no-' ) + featureName ) ;
}
}
Modernizr . addTest = function ( feature , test ) {
if ( typeof feature == 'object' ) {
for ( var key in feature ) {
if ( hasOwnProp ( feature , key ) ) {
Modernizr . addTest ( key , feature [ key ] ) ;
}
}
} else {
feature = feature . toLowerCase ( ) ;
if ( Modernizr [ feature ] !== undefined ) {
return Modernizr ;
}
test = typeof test == 'function' ? test ( ) : test ;
if ( typeof enableClasses !== "undefined" && enableClasses ) {
docElement . className += ' ' + ( test ? '' : 'no-' ) + feature ;
}
Modernizr [ feature ] = test ;
}
return Modernizr ;
} ;
setCss ( '' ) ;
modElem = inputElem = null ;
; ( function ( window , document ) {
var version = '3.7.0' ;
var options = window . html5 || { } ;
var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i ;
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 ;
var supportsHtml5Styles ;
var expando = '_html5shiv' ;
var expanID = 0 ;
var expandoData = { } ;
var supportsUnknownElements ;
( function ( ) {
try {
var a = document . createElement ( 'a' ) ;
a . innerHTML = '<xyz></xyz>' ;
supportsHtml5Styles = ( 'hidden' in a ) ;
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 ;
}
} ( ) ) ;
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 ) ;
}
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 ;
}
return data ;
}
function createElement ( nodeName , ownerDocument , data ) {
if ( ! ownerDocument ) {
ownerDocument = document ;
}
if ( supportsUnknownElements ) {
return ownerDocument . createElement ( nodeName ) ;
}
if ( ! data ) {
data = getExpandoData ( ownerDocument ) ;
}
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 ) ;
}
return node . canHaveChildren && ! reSkip . test ( nodeName ) && ! node . tagUrn ? data . frag . appendChild ( node ) : node ;
}
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 ;
}
function shivMethods ( ownerDocument , data ) {
if ( ! data . cache ) {
data . cache = { } ;
data . createElem = ownerDocument . createElement ;
data . createFrag = ownerDocument . createDocumentFragment ;
data . frag = data . createFrag ( ) ;
}
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 ;
}
var data = getExpandoData ( ownerDocument ) ;
if ( html5 . shivCSS && ! supportsHtml5Styles && ! data . hasCSS ) {
data . hasCSS = ! ! addStyleSheet ( ownerDocument ,
'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
'mark{background:#FF0;color:#000}' +
'template{display:none}'
) ;
}
if ( ! supportsUnknownElements ) {
shivMethods ( ownerDocument , data ) ;
}
return ownerDocument ;
}
var html5 = {
'elements' : options . elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video' ,
'version' : version ,
'shivCSS' : ( options . shivCSS !== false ) ,
'supportsUnknownElements' : supportsUnknownElements ,
'shivMethods' : ( options . shivMethods !== false ) ,
'type' : 'default' ,
'shivDocument' : shivDocument ,
createElement : createElement ,
createDocumentFragment : createDocumentFragment
} ;
window . html5 = html5 ;
shivDocument ( document ) ;
} ( this , document ) ) ;
Modernizr . _version = version ;
docElement . className = docElement . className . replace ( /(^|\s)no-js(\s|$)/ , '$1$2' ) +
( enableClasses ? ' js ' + classes . join ( ' ' ) : '' ) ;
return Modernizr ;
} ) ( this , this . document ) ;
;