]> scripts.mit.edu Git - autoinstalls/wordpress.git/blob - wp-content/themes/twentythirteen/js/functions.js
WordPress 3.9.2
[autoinstalls/wordpress.git] / wp-content / themes / twentythirteen / js / functions.js
1 /**
2  * Functionality specific to Twenty Thirteen.
3  *
4  * Provides helper functions to enhance the theme experience.
5  */
6
7 ( function( $ ) {
8         var body    = $( 'body' ),
9             _window = $( window );
10
11         /**
12          * Adds a top margin to the footer if the sidebar widget area is higher
13          * than the rest of the page, to help the footer always visually clear
14          * the sidebar.
15          */
16         $( function() {
17                 if ( body.is( '.sidebar' ) ) {
18                         var sidebar   = $( '#secondary .widget-area' ),
19                             secondary = ( 0 === sidebar.length ) ? -40 : sidebar.height(),
20                             margin    = $( '#tertiary .widget-area' ).height() - $( '#content' ).height() - secondary;
21
22                         if ( margin > 0 && _window.innerWidth() > 999 ) {
23                                 $( '#colophon' ).css( 'margin-top', margin + 'px' );
24                         }
25                 }
26         } );
27
28         /**
29          * Enables menu toggle for small screens.
30          */
31         ( function() {
32                 var nav = $( '#site-navigation' ), button, menu;
33                 if ( ! nav ) {
34                         return;
35                 }
36
37                 button = nav.find( '.menu-toggle' );
38                 if ( ! button ) {
39                         return;
40                 }
41
42                 // Hide button if menu is missing or empty.
43                 menu = nav.find( '.nav-menu' );
44                 if ( ! menu || ! menu.children().length ) {
45                         button.hide();
46                         return;
47                 }
48
49                 button.on( 'click.twentythirteen', function() {
50                         nav.toggleClass( 'toggled-on' );
51                 } );
52
53                 // Better focus for hidden submenu items for accessibility.
54                 menu.find( 'a' ).on( 'focus.twentythirteen blur.twentythirteen', function() {
55                         $( this ).parents( '.menu-item, .page_item' ).toggleClass( 'focus' );
56                 } );
57         } )();
58
59         /**
60          * Makes "skip to content" link work correctly in IE9 and Chrome for better
61          * accessibility.
62          *
63          * @link http://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/
64          */
65         _window.on( 'hashchange.twentythirteen', function() {
66                 var element = document.getElementById( location.hash.substring( 1 ) );
67
68                 if ( element ) {
69                         if ( ! /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) {
70                                 element.tabIndex = -1;
71                         }
72
73                         element.focus();
74                 }
75         } );
76
77         /**
78          * Arranges footer widgets vertically.
79          */
80         if ( $.isFunction( $.fn.masonry ) ) {
81                 var columnWidth = body.is( '.sidebar' ) ? 228 : 245;
82
83                 $( '#secondary .widget-area' ).masonry( {
84                         itemSelector: '.widget',
85                         columnWidth: columnWidth,
86                         gutterWidth: 20,
87                         isRTL: body.is( '.rtl' )
88                 } );
89         }
90 } )( jQuery );