├── README.md
├── css
├── component.css
└── default.css
├── fonts
├── fontawesome.eot
├── fontawesome.svg
├── fontawesome.ttf
├── fontawesome.woff
└── readme.md
├── images
├── 1.jpg
├── 2.jpg
├── 3.jpg
├── 4.jpg
└── 5.jpg
├── index.html
└── js
├── jquery.cbpFWSlider.js
├── jquery.cbpFWSlider.min.js
└── modernizr.custom.js
/README.md:
--------------------------------------------------------------------------------
1 | Blueprint: Full Width Image Slider
2 | =========
3 |
4 | A very simple 100% width slider that scales down to mobile.
5 |
6 | [article on Codrops](http://tympanus.net/codrops/?p=13665)
7 |
8 | [demo](http://tympanus.net/Blueprints/FullWidthImageSlider/)
9 |
10 | The Blueprints are a collection of basic and minimal website concepts, components, plugins and layouts with minimal style for easy adaption and usage, or simply for inspiration.
11 | Check out all of our Blueprints [here](http://tympanus.net/codrops/category/blueprints/)
12 |
13 | [LICENSING & TERMS OF USE](http://tympanus.net/codrops/licensing/)
--------------------------------------------------------------------------------
/css/component.css:
--------------------------------------------------------------------------------
1 | .cbp-fwslider {
2 | position: relative;
3 | margin: 0 0 10px;
4 | overflow: hidden;
5 | padding: 40px 0 60px;
6 | }
7 |
8 | .cbp-fwslider ul {
9 | margin: 0;
10 | padding: 0;
11 | white-space: nowrap;
12 | list-style-type: none;
13 | }
14 |
15 | .cbp-fwslider ul li {
16 | -webkit-transform: translateZ(0);
17 | -moz-transform: translateZ(0);
18 | transform: translateZ(0);
19 | float: left;
20 | display: block;
21 | margin: 0;
22 | padding: 0;
23 | }
24 |
25 | .cbp-fwslider ul li > a,
26 | .cbp-fwslider ul li > div {
27 | display: block;
28 | text-align: center;
29 | outline: none;
30 | }
31 |
32 | .cbp-fwslider ul li img {
33 | border: none;
34 | display: block;
35 | margin: 0 auto;
36 | max-width: 75%;
37 | }
38 |
39 | .cbp-fwslider nav span {
40 | position: absolute;
41 | top: 50%;
42 | width: 50px;
43 | height: 100px;
44 | background: #47a3da;
45 | color: #fff;
46 | font-size: 50px;
47 | text-align: center;
48 | margin-top: -50px;
49 | line-height: 100px;
50 | cursor: pointer;
51 | font-weight: normal;
52 | }
53 |
54 | .cbp-fwslider nav span:hover {
55 | background: #378fc3;
56 | }
57 |
58 | .cbp-fwslider nav span.cbp-fwnext {
59 | right: 0px;
60 | }
61 |
62 | .cbp-fwslider nav span.cbp-fwprev {
63 | left: 0px;
64 | }
65 |
66 | .cbp-fwdots {
67 | position: absolute;
68 | bottom: 0px;
69 | white-space: nowrap;
70 | text-align: center;
71 | width: 100%;
72 | }
73 |
74 | .cbp-fwdots span {
75 | display: inline-block;
76 | width: 18px;
77 | height: 18px;
78 | background: #ddd;
79 | margin: 4px;
80 | border-radius: 50%;
81 | cursor: pointer;
82 | }
83 |
84 | .cbp-fwdots span:hover {
85 | background: #999;
86 | }
87 |
88 | .cbp-fwdots span.cbp-fwcurrent {
89 | background: #47a3da;
90 | box-shadow: 0 0 0 2px #47a3da;
91 | -webkit-transition: box-shadow 0.2s ease-in-out;
92 | -moz-transition: box-shadow 0.2s ease-in-out;
93 | transition: box-shadow 0.2s ease-in-out;
94 | }
--------------------------------------------------------------------------------
/css/default.css:
--------------------------------------------------------------------------------
1 | /* General Demo Style */
2 | @import url(http://fonts.googleapis.com/css?family=Lato:300,400,700);
3 |
4 | @font-face {
5 | font-family: 'fontawesome';
6 | src:url('../fonts/fontawesome.eot');
7 | src:url('../fonts/fontawesome.eot?#iefix') format('embedded-opentype'),
8 | url('../fonts/fontawesome.svg#fontawesome') format('svg'),
9 | url('../fonts/fontawesome.woff') format('woff'),
10 | url('../fonts/fontawesome.ttf') format('truetype');
11 | font-weight: normal;
12 | font-style: normal;
13 | }
14 |
15 | body, html { font-size: 100%; padding: 0; margin: 0;}
16 |
17 | /* Reset */
18 | *,
19 | *:after,
20 | *:before {
21 | -webkit-box-sizing: border-box;
22 | -moz-box-sizing: border-box;
23 | box-sizing: border-box;
24 | }
25 |
26 | /* Clearfix hack by Nicolas Gallagher: http://nicolasgallagher.com/micro-clearfix-hack/ */
27 | .clearfix:before,
28 | .clearfix:after {
29 | content: " ";
30 | display: table;
31 | }
32 |
33 | .clearfix:after {
34 | clear: both;
35 | }
36 |
37 | body {
38 | font-family: 'Lato', Calibri, Arial, sans-serif;
39 | color: #47a3da;
40 |
41 | }
42 |
43 | a {
44 | color: #f0f0f0;
45 | text-decoration: none;
46 | }
47 |
48 | a:hover {
49 | color: #000;
50 | }
51 |
52 | .main,
53 | .container > header {
54 | width: 90%;
55 | max-width: 70em;
56 | margin: 0 auto;
57 | padding: 0 1.875em 3.125em 1.875em;
58 | }
59 |
60 | .container > header {
61 | padding: 2.875em 1.875em 1.875em;
62 | }
63 |
64 | .container > header h1 {
65 | font-size: 2.125em;
66 | line-height: 1.3;
67 | margin: 0;
68 | float: left;
69 | font-weight: 400;
70 | }
71 |
72 | .container > header span {
73 | display: block;
74 | font-weight: 700;
75 | text-transform: uppercase;
76 | letter-spacing: 0.5em;
77 | padding: 0 0 0.6em 0.1em;
78 | }
79 |
80 | .container > header nav {
81 | float: right;
82 | }
83 |
84 | .container > header nav a {
85 | display: block;
86 | float: left;
87 | position: relative;
88 | width: 2.5em;
89 | height: 2.5em;
90 | background: #fff;
91 | border-radius: 50%;
92 | color: transparent;
93 | margin: 0 0.1em;
94 | border: 4px solid #47a3da;
95 | text-indent: -8000px;
96 | }
97 |
98 | .container > header nav a:after {
99 | content: attr(data-info);
100 | color: #47a3da;
101 | position: absolute;
102 | width: 600%;
103 | top: 120%;
104 | text-align: right;
105 | right: 0;
106 | opacity: 0;
107 | pointer-events: none;
108 | }
109 |
110 | .container > header nav a:hover:after {
111 | opacity: 1;
112 | }
113 |
114 | .container > header nav a:hover {
115 | background: #47a3da;
116 | }
117 |
118 | .icon-drop:before,
119 | .icon-arrow-left:before {
120 | font-family: 'fontawesome';
121 | position: absolute;
122 | top: 0;
123 | width: 100%;
124 | height: 100%;
125 | speak: none;
126 | font-style: normal;
127 | font-weight: normal;
128 | line-height: 2;
129 | text-align: center;
130 | color: #47a3da;
131 | -webkit-font-smoothing: antialiased;
132 | text-indent: 8000px;
133 | padding-left: 8px;
134 | }
135 |
136 | .container > header nav a:hover:before {
137 | color: #fff;
138 | }
139 |
140 | .icon-drop:before {
141 | content: "\e000";
142 | }
143 |
144 | .icon-arrow-left:before {
145 | content: "\f060";
146 | }
147 |
148 |
--------------------------------------------------------------------------------
/fonts/fontawesome.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codrops/Blueprint-FullWidthImageSlider/f69efd5832eaa18a2a82b099bacee65d8876c16b/fonts/fontawesome.eot
--------------------------------------------------------------------------------
/fonts/fontawesome.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/fonts/fontawesome.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codrops/Blueprint-FullWidthImageSlider/f69efd5832eaa18a2a82b099bacee65d8876c16b/fonts/fontawesome.ttf
--------------------------------------------------------------------------------
/fonts/fontawesome.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codrops/Blueprint-FullWidthImageSlider/f69efd5832eaa18a2a82b099bacee65d8876c16b/fonts/fontawesome.woff
--------------------------------------------------------------------------------
/fonts/readme.md:
--------------------------------------------------------------------------------
1 | Icons made with http://icomoon.io/
2 |
3 | #Font Awesome 3.0.2
4 | ##the iconic font designed for use with Twitter Bootstrap
5 |
6 | The full suite of pictographic icons, examples, and documentation can be found at:
7 | http://fortawesome.github.com/Font-Awesome/
8 |
9 |
10 | ##License
11 | - The Font Awesome font is licensed under the SIL Open Font License - http://scripts.sil.org/OFL
12 | - Font Awesome CSS, LESS, and SASS files are licensed under the MIT License - http://opensource.org/licenses/mit-license.html
13 | - The Font Awesome pictograms are licensed under the CC BY 3.0 License - http://creativecommons.org/licenses/by/3.0/
14 | - Attribution is no longer required in Font Awesome 3.0, but much appreciated: "Font Awesome by Dave Gandy - http://fortawesome.github.com/Font-Awesome"
15 |
16 | ##Contact
17 | - Email: dave@davegandy.com
18 | - Twitter: http://twitter.com/fortaweso_me
19 | - Work: Lead Product Designer @ http://kyru.us
20 |
21 | ##Changelog
22 | - v3.0.0 - all icons redesigned from scratch, optimized for Bootstrap's 14px default
23 | - v3.0.1 - much improved rendering in webkit, various bugfixes
24 | - v3.0.2 - much improved rendering and alignment in IE7
25 |
--------------------------------------------------------------------------------
/images/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codrops/Blueprint-FullWidthImageSlider/f69efd5832eaa18a2a82b099bacee65d8876c16b/images/1.jpg
--------------------------------------------------------------------------------
/images/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codrops/Blueprint-FullWidthImageSlider/f69efd5832eaa18a2a82b099bacee65d8876c16b/images/2.jpg
--------------------------------------------------------------------------------
/images/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codrops/Blueprint-FullWidthImageSlider/f69efd5832eaa18a2a82b099bacee65d8876c16b/images/3.jpg
--------------------------------------------------------------------------------
/images/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codrops/Blueprint-FullWidthImageSlider/f69efd5832eaa18a2a82b099bacee65d8876c16b/images/4.jpg
--------------------------------------------------------------------------------
/images/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codrops/Blueprint-FullWidthImageSlider/f69efd5832eaa18a2a82b099bacee65d8876c16b/images/5.jpg
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Blueprint: Full Width Image Slider
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
36 |
37 |
38 |
58 |
59 |
--------------------------------------------------------------------------------
/js/jquery.cbpFWSlider.js:
--------------------------------------------------------------------------------
1 | /**
2 | * jquery.cbpFWSlider.js v1.0.0
3 | * http://www.codrops.com
4 | *
5 | * Licensed under the MIT license.
6 | * http://www.opensource.org/licenses/mit-license.php
7 | *
8 | * Copyright 2013, Codrops
9 | * http://www.codrops.com
10 | */
11 | ;( function( $, window, undefined ) {
12 |
13 | 'use strict';
14 |
15 | // global
16 | var Modernizr = window.Modernizr;
17 |
18 | $.CBPFWSlider = function( options, element ) {
19 | this.$el = $( element );
20 | this._init( options );
21 | };
22 |
23 | // the options
24 | $.CBPFWSlider.defaults = {
25 | // default transition speed (ms)
26 | speed : 500,
27 | // default transition easing
28 | easing : 'ease'
29 | };
30 |
31 | $.CBPFWSlider.prototype = {
32 | _init : function( options ) {
33 | // options
34 | this.options = $.extend( true, {}, $.CBPFWSlider.defaults, options );
35 | // cache some elements and initialize some variables
36 | this._config();
37 | // initialize/bind the events
38 | this._initEvents();
39 | },
40 | _config : function() {
41 |
42 | // the list of items
43 | this.$list = this.$el.children( 'ul' );
44 | // the items (li elements)
45 | this.$items = this.$list.children( 'li' );
46 | // total number of items
47 | this.itemsCount = this.$items.length;
48 | // support for CSS Transitions & transforms
49 | this.support = Modernizr.csstransitions && Modernizr.csstransforms;
50 | this.support3d = Modernizr.csstransforms3d;
51 | // transition end event name and transform name
52 | // transition end event name
53 | var transEndEventNames = {
54 | 'WebkitTransition' : 'webkitTransitionEnd',
55 | 'MozTransition' : 'transitionend',
56 | 'OTransition' : 'oTransitionEnd',
57 | 'msTransition' : 'MSTransitionEnd',
58 | 'transition' : 'transitionend'
59 | },
60 | transformNames = {
61 | 'WebkitTransform' : '-webkit-transform',
62 | 'MozTransform' : '-moz-transform',
63 | 'OTransform' : '-o-transform',
64 | 'msTransform' : '-ms-transform',
65 | 'transform' : 'transform'
66 | };
67 |
68 | if( this.support ) {
69 | this.transEndEventName = transEndEventNames[ Modernizr.prefixed( 'transition' ) ] + '.cbpFWSlider';
70 | this.transformName = transformNames[ Modernizr.prefixed( 'transform' ) ];
71 | }
72 | // current and old item´s index
73 | this.current = 0;
74 | this.old = 0;
75 | // check if the list is currently moving
76 | this.isAnimating = false;
77 | // the list (ul) will have a width of 100% x itemsCount
78 | this.$list.css( 'width', 100 * this.itemsCount + '%' );
79 | // apply the transition
80 | if( this.support ) {
81 | this.$list.css( 'transition', this.transformName + ' ' + this.options.speed + 'ms ' + this.options.easing );
82 | }
83 | // each item will have a width of 100 / itemsCount
84 | this.$items.css( 'width', 100 / this.itemsCount + '%' );
85 | // add navigation arrows and the navigation dots if there is more than 1 item
86 | if( this.itemsCount > 1 ) {
87 |
88 | // add navigation arrows (the previous arrow is not shown initially):
89 | this.$navPrev = $( '<' ).hide();
90 | this.$navNext = $( '>' );
91 | $( '' ).append( this.$navPrev, this.$navNext ).appendTo( this.$el );
92 | // add navigation dots
93 | var dots = '';
94 | for( var i = 0; i < this.itemsCount; ++i ) {
95 | // current dot will have the class cbp-fwcurrent
96 | var dot = i === this.current ? '' : '';
97 | dots += dot;
98 | }
99 | var navDots = $( '' ).append( dots ).appendTo( this.$el );
100 | this.$navDots = navDots.children( 'span' );
101 |
102 | }
103 |
104 | },
105 | _initEvents : function() {
106 |
107 | var self = this;
108 | if( this.itemsCount > 1 ) {
109 | this.$navPrev.on( 'click.cbpFWSlider', $.proxy( this._navigate, this, 'previous' ) );
110 | this.$navNext.on( 'click.cbpFWSlider', $.proxy( this._navigate, this, 'next' ) );
111 | this.$navDots.on( 'click.cbpFWSlider', function() { self._jump( $( this ).index() ); } );
112 | }
113 |
114 | },
115 | _navigate : function( direction ) {
116 |
117 | // do nothing if the list is currently moving
118 | if( this.isAnimating ) {
119 | return false;
120 | }
121 |
122 | this.isAnimating = true;
123 | // update old and current values
124 | this.old = this.current;
125 | if( direction === 'next' && this.current < this.itemsCount - 1 ) {
126 | ++this.current;
127 | }
128 | else if( direction === 'previous' && this.current > 0 ) {
129 | --this.current;
130 | }
131 | // slide
132 | this._slide();
133 |
134 | },
135 | _slide : function() {
136 |
137 | // check which navigation arrows should be shown
138 | this._toggleNavControls();
139 | // translate value
140 | var translateVal = -1 * this.current * 100 / this.itemsCount;
141 | if( this.support ) {
142 | this.$list.css( 'transform', this.support3d ? 'translate3d(' + translateVal + '%,0,0)' : 'translate(' + translateVal + '%)' );
143 | }
144 | else {
145 | this.$list.css( 'margin-left', -1 * this.current * 100 + '%' );
146 | }
147 |
148 | var transitionendfn = $.proxy( function() {
149 | this.isAnimating = false;
150 | }, this );
151 |
152 | if( this.support ) {
153 | this.$list.on( this.transEndEventName, $.proxy( transitionendfn, this ) );
154 | }
155 | else {
156 | transitionendfn.call();
157 | }
158 |
159 | },
160 | _toggleNavControls : function() {
161 |
162 | // if the current item is the first one in the list, the left arrow is not shown
163 | // if the current item is the last one in the list, the right arrow is not shown
164 | switch( this.current ) {
165 | case 0 : this.$navNext.show(); this.$navPrev.hide(); break;
166 | case this.itemsCount - 1 : this.$navNext.hide(); this.$navPrev.show(); break;
167 | default : this.$navNext.show(); this.$navPrev.show(); break;
168 | }
169 | // highlight navigation dot
170 | this.$navDots.eq( this.old ).removeClass( 'cbp-fwcurrent' ).end().eq( this.current ).addClass( 'cbp-fwcurrent' );
171 |
172 | },
173 | _jump : function( position ) {
174 |
175 | // do nothing if clicking on the current dot, or if the list is currently moving
176 | if( position === this.current || this.isAnimating ) {
177 | return false;
178 | }
179 | this.isAnimating = true;
180 | // update old and current values
181 | this.old = this.current;
182 | this.current = position;
183 | // slide
184 | this._slide();
185 |
186 | },
187 | destroy : function() {
188 |
189 | if( this.itemsCount > 1 ) {
190 | this.$navPrev.parent().remove();
191 | this.$navDots.parent().remove();
192 | }
193 | this.$list.css( 'width', 'auto' );
194 | if( this.support ) {
195 | this.$list.css( 'transition', 'none' );
196 | }
197 | this.$items.css( 'width', 'auto' );
198 |
199 | }
200 | };
201 |
202 | var logError = function( message ) {
203 | if ( window.console ) {
204 | window.console.error( message );
205 | }
206 | };
207 |
208 | $.fn.cbpFWSlider = function( options ) {
209 | if ( typeof options === 'string' ) {
210 | var args = Array.prototype.slice.call( arguments, 1 );
211 | this.each(function() {
212 | var instance = $.data( this, 'cbpFWSlider' );
213 | if ( !instance ) {
214 | logError( "cannot call methods on cbpFWSlider prior to initialization; " +
215 | "attempted to call method '" + options + "'" );
216 | return;
217 | }
218 | if ( !$.isFunction( instance[options] ) || options.charAt(0) === "_" ) {
219 | logError( "no such method '" + options + "' for cbpFWSlider instance" );
220 | return;
221 | }
222 | instance[ options ].apply( instance, args );
223 | });
224 | }
225 | else {
226 | this.each(function() {
227 | var instance = $.data( this, 'cbpFWSlider' );
228 | if ( instance ) {
229 | instance._init();
230 | }
231 | else {
232 | instance = $.data( this, 'cbpFWSlider', new $.CBPFWSlider( options, this ) );
233 | }
234 | });
235 | }
236 | return this;
237 | };
238 |
239 | } )( jQuery, window );
--------------------------------------------------------------------------------
/js/jquery.cbpFWSlider.min.js:
--------------------------------------------------------------------------------
1 | (function(c,b,e){var d=b.Modernizr;c.CBPFWSlider=function(f,g){this.$el=c(g);this._init(f)};c.CBPFWSlider.defaults={speed:500,easing:"ease"};c.CBPFWSlider.prototype={_init:function(f){this.options=c.extend(true,{},c.CBPFWSlider.defaults,f);this._config();this._initEvents()},_config:function(){this.$list=this.$el.children("ul");this.$items=this.$list.children("li");this.itemsCount=this.$items.length;this.support=d.csstransitions&&d.csstransforms;this.support3d=d.csstransforms3d;var h={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd",transition:"transitionend"},k={WebkitTransform:"-webkit-transform",MozTransform:"-moz-transform",OTransform:"-o-transform",msTransform:"-ms-transform",transform:"transform"};if(this.support){this.transEndEventName=h[d.prefixed("transition")]+".cbpFWSlider";this.transformName=k[d.prefixed("transform")]}this.current=0;this.old=0;this.isAnimating=false;this.$list.css("width",100*this.itemsCount+"%");if(this.support){this.$list.css("transition",this.transformName+" "+this.options.speed+"ms "+this.options.easing)}this.$items.css("width",100/this.itemsCount+"%");if(this.itemsCount>1){this.$navPrev=c('<').hide();this.$navNext=c('>');c("").append(this.$navPrev,this.$navNext).appendTo(this.$el);var l="";for(var g=0;g':"";l+=f}var j=c('').append(l).appendTo(this.$el);this.$navDots=j.children("span")}},_initEvents:function(){var f=this;if(this.itemsCount>1){this.$navPrev.on("click.cbpFWSlider",c.proxy(this._navigate,this,"previous"));this.$navNext.on("click.cbpFWSlider",c.proxy(this._navigate,this,"next"));this.$navDots.on("click.cbpFWSlider",function(){f._jump(c(this).index())})}},_navigate:function(f){if(this.isAnimating){return false}this.isAnimating=true;this.old=this.current;if(f==="next"&&this.current0){--this.current}}this._slide()},_slide:function(){this._toggleNavControls();var g=-1*this.current*100/this.itemsCount;if(this.support){this.$list.css("transform",this.support3d?"translate3d("+g+"%,0,0)":"translate("+g+"%)")}else{this.$list.css("margin-left",-1*this.current*100+"%")}var f=c.proxy(function(){this.isAnimating=false},this);if(this.support){this.$list.on(this.transEndEventName,c.proxy(f,this))}else{f.call()}},_toggleNavControls:function(){switch(this.current){case 0:this.$navNext.show();this.$navPrev.hide();break;case this.itemsCount-1:this.$navNext.hide();this.$navPrev.show();break;default:this.$navNext.show();this.$navPrev.show();break}this.$navDots.eq(this.old).removeClass("cbp-fwcurrent").end().eq(this.current).addClass("cbp-fwcurrent")},_jump:function(f){if(f===this.current||this.isAnimating){return false}this.isAnimating=true;this.old=this.current;this.current=f;this._slide()},destroy:function(){if(this.itemsCount>1){this.$navPrev.parent().remove();this.$navDots.parent().remove()}this.$list.css("width","auto");if(this.support){this.$list.css("transition","none")}this.$items.css("width","auto")}};var a=function(f){if(b.console){b.console.error(f)}};c.fn.cbpFWSlider=function(g){if(typeof g==="string"){var f=Array.prototype.slice.call(arguments,1);this.each(function(){var h=c.data(this,"cbpFWSlider");if(!h){a("cannot call methods on cbpFWSlider prior to initialization; attempted to call method '"+g+"'");return}if(!c.isFunction(h[g])||g.charAt(0)==="_"){a("no such method '"+g+"' for cbpFWSlider instance");return}h[g].apply(h,f)})}else{this.each(function(){var h=c.data(this,"cbpFWSlider");if(h){h._init()}else{h=c.data(this,"cbpFWSlider",new c.CBPFWSlider(g,this))}})}return this}})(jQuery,window);
--------------------------------------------------------------------------------
/js/modernizr.custom.js:
--------------------------------------------------------------------------------
1 | /* Modernizr 2.6.2 (Custom Build) | MIT & BSD
2 | * Build: http://modernizr.com/download/#-csstransforms-csstransforms3d-csstransitions-shiv-cssclasses-prefixed-teststyles-testprop-testallprops-prefixes-domprefixes-load
3 | */
4 | ;window.Modernizr=function(a,b,c){function z(a){j.cssText=a}function A(a,b){return z(m.join(a+";")+(b||""))}function B(a,b){return typeof a===b}function C(a,b){return!!~(""+a).indexOf(b)}function D(a,b){for(var d in a){var e=a[d];if(!C(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:B(f,"function")?f.bind(d||b):f}return!1}function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+o.join(d+" ")+d).split(" ");return B(b,"string")||B(b,"undefined")?D(e,b):(e=(a+" "+p.join(d+" ")+d).split(" "),E(e,b,c))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n="Webkit Moz O ms",o=n.split(" "),p=n.toLowerCase().split(" "),q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["",'"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},x={}.hasOwnProperty,y;!B(x,"undefined")&&!B(x.call,"undefined")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e}),q.csstransforms=function(){return!!F("transform")},q.csstransforms3d=function(){var a=!!F("perspective");return a&&"webkitPerspective"in g.style&&w("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},q.csstransitions=function(){return F("transition")};for(var G in q)y(q,G)&&(v=G.toLowerCase(),e[v]=q[G](),t.push((e[v]?"":"no-")+v));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)y(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},z(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.testProp=function(a){return D([a])},e.testAllProps=F,e.testStyles=w,e.prefixed=function(a,b,c){return b?F(a,b,c):F(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+t.join(" "):""),e}(this,this.document),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