2014-08-14 23:27:17 +02:00
/ *
2015-02-20 23:35:58 +01:00
Sticky - kit v1 . 1.1 | WTFPL | Leaf Corcoran 2014 | http : //leafo.net
2014-08-14 23:27:17 +02:00
* /
2015-02-20 23:35:58 +01:00
( function ( ) { var k , e ; k = this . jQuery || window . jQuery ; e = k ( window ) ; k . fn . stick _in _parent = function ( d ) { var v , y , n , p , h , C , s , G , q , H ; null == d && ( d = { } ) ; s = d . sticky _class ; y = d . inner _scrolling ; C = d . recalc _every ; h = d . parent ; p = d . offset _top ; n = d . spacer ; v = d . bottoming ; null == p && ( p = 0 ) ; null == h && ( h = void 0 ) ; null == y && ( y = ! 0 ) ; null == s && ( s = "is_stuck" ) ; null == v && ( v = ! 0 ) ; G = function ( a , d , q , z , D , t , r , E ) { var u , F , m , A , c , f , B , w , x , g , b ; if ( ! a . data ( "sticky_kit" ) ) { a . data ( "sticky_kit" , ! 0 ) ; f = a . parent ( ) ; null != h && ( f = f . closest ( h ) ) ; if ( ! f . length ) throw "failed to find stick parent" ;
u = m = ! 1 ; ( g = null != n ? n && a . closest ( n ) : k ( "<div />" ) ) && g . css ( "position" , a . css ( "position" ) ) ; B = function ( ) { var c , e , l ; if ( ! E && ( c = parseInt ( f . css ( "border-top-width" ) , 10 ) , e = parseInt ( f . css ( "padding-top" ) , 10 ) , d = parseInt ( f . css ( "padding-bottom" ) , 10 ) , q = f . offset ( ) . top + c + e , z = f . height ( ) , m && ( u = m = ! 1 , null == n && ( a . insertAfter ( g ) , g . detach ( ) ) , a . css ( { position : "" , top : "" , width : "" , bottom : "" } ) . removeClass ( s ) , l = ! 0 ) , D = a . offset ( ) . top - parseInt ( a . css ( "margin-top" ) , 10 ) - p , t = a . outerHeight ( ! 0 ) , r = a . css ( "float" ) , g && g . css ( { width : a . outerWidth ( ! 0 ) ,
height : t , display : a . css ( "display" ) , "vertical-align" : a . css ( "vertical-align" ) , "float" : r } ) , l ) ) return b ( ) } ; B ( ) ; if ( t !== z ) return A = void 0 , c = p , x = C , b = function ( ) { var b , k , l , h ; if ( ! E && ( null != x && ( -- x , 0 >= x && ( x = C , B ( ) ) ) , l = e . scrollTop ( ) , null != A && ( k = l - A ) , A = l , m ? ( v && ( h = l + t + c > z + q , u && ! h && ( u = ! 1 , a . css ( { position : "fixed" , bottom : "" , top : c } ) . trigger ( "sticky_kit:unbottom" ) ) ) , l < D && ( m = ! 1 , c = p , null == n && ( "left" !== r && "right" !== r || a . insertAfter ( g ) , g . detach ( ) ) , b = { position : "" , width : "" , top : "" } , a . css ( b ) . removeClass ( s ) . trigger ( "sticky_kit:unstick" ) ) ,
y && ( b = e . height ( ) , t + p > b && ! u && ( c -= k , c = Math . max ( b - t , c ) , c = Math . min ( p , c ) , m && a . css ( { top : c + "px" } ) ) ) ) : l > D && ( m = ! 0 , b = { position : "fixed" , top : c } , b . width = "border-box" === a . css ( "box-sizing" ) ? a . outerWidth ( ) + "px" : a . width ( ) + "px" , a . css ( b ) . addClass ( s ) , null == n && ( a . after ( g ) , "left" !== r && "right" !== r || g . append ( a ) ) , a . trigger ( "sticky_kit:stick" ) ) , m && v && ( null == h && ( h = l + t + c > z + q ) , ! u && h ) ) ) return u = ! 0 , "static" === f . css ( "position" ) && f . css ( { position : "relative" } ) , a . css ( { position : "absolute" , bottom : d , top : "auto" } ) . trigger ( "sticky_kit:bottom" ) } ,
w = function ( ) { B ( ) ; return b ( ) } , F = function ( ) { E = ! 0 ; e . off ( "touchmove" , b ) ; e . off ( "scroll" , b ) ; e . off ( "resize" , w ) ; k ( document . body ) . off ( "sticky_kit:recalc" , w ) ; a . off ( "sticky_kit:detach" , F ) ; a . removeData ( "sticky_kit" ) ; a . css ( { position : "" , bottom : "" , top : "" , width : "" } ) ; f . position ( "position" , "" ) ; if ( m ) return null == n && ( "left" !== r && "right" !== r || a . insertAfter ( g ) , g . remove ( ) ) , a . removeClass ( s ) } , e . on ( "touchmove" , b ) , e . on ( "scroll" , b ) , e . on ( "resize" , w ) , k ( document . body ) . on ( "sticky_kit:recalc" , w ) , a . on ( "sticky_kit:detach" , F ) , setTimeout ( b ,
0 ) } } ; q = 0 ; for ( H = this . length ; q < H ; q ++ ) d = this [ q ] , G ( k ( d ) ) ; return this } } ) . call ( this ) ;