2017-03-07 18:20:10 +00:00
/*! vTicker 1.21 http://richhollis.github.com/vticker/ | http://richhollis.github.com/vticker/license/ | based on Jubgits vTicker http://www.jugbit.com/jquery-vticker-vertical-news-ticker/ */
( function ( d ) { var g , c , f ; g = { speed : 700 , pause : 4E3 , showItems : 1 , mousePause : ! 0 , height : 0 , animate : ! 0 , margin : 0 , padding : 0 , startPaused : ! 1 , autoAppend : ! 0 } ; c = { moveUp : function ( a , b ) { return c . showNextItem ( a , b , "up" ) } , moveDown : function ( a , b ) { return c . showNextItem ( a , b , "down" ) } , nextItemState : function ( a , b ) { var e , c ; c = a . element . children ( "ul" ) ; e = a . itemHeight ; 0 < a . options . height && ( e = c . children ( "li:first" ) . height ( ) ) ; e += a . options . margin + 2 * a . options . padding ; return { height : e , options : a . options , el : a . element , obj : c , selector : "up" === b ?
"li:first" : "li:last" , dir : b } } , showNextItem : function ( a , b , e ) { var d ; d = c . nextItemState ( a , e ) ; d . el . trigger ( "vticker.beforeTick" ) ; e = d . obj . children ( d . selector ) . clone ( ! 0 ) ; "down" === d . dir && d . obj . css ( "top" , "-" + d . height + "px" ) . prepend ( e ) ; b && b . animate ? a . animating || c . animateNextItem ( d , a ) : c . nonAnimatedNextItem ( d ) ; "up" === d . dir && a . options . autoAppend && e . appendTo ( d . obj ) ; return d . el . trigger ( "vticker.afterTick" ) } , animateNextItem : function ( a , b ) { b . animating = ! 0 ; return a . obj . animate ( "up" === a . dir ? { top : "-=" + a . height + "px" } : { top : 0 } ,
b . options . speed , function ( ) { d ( a . obj ) . children ( a . selector ) . remove ( ) ; d ( a . obj ) . css ( "top" , "0px" ) ; return b . animating = ! 1 } ) } , nonAnimatedNextItem : function ( a ) { a . obj . children ( a . selector ) . remove ( ) ; return a . obj . css ( "top" , "0px" ) } , nextUsePause : function ( ) { var a , b ; b = d ( this ) . data ( "state" ) ; a = b . options ; if ( ! b . isPaused && ! c . hasSingleItem ( b ) ) return f . next . call ( this , { animate : a . animate } ) } , startInterval : function ( ) { var a , b ; b = d ( this ) . data ( "state" ) ; a = b . options ; return b . intervalId = setInterval ( function ( a ) { return function ( ) { return c . nextUsePause . call ( a ) } } ( this ) ,
a . pause ) } , stopInterval : function ( ) { var a ; if ( a = d ( this ) . data ( "state" ) ) return a . intervalId && clearInterval ( a . intervalId ) , a . intervalId = void 0 } , restartInterval : function ( ) { c . stopInterval . call ( this ) ; return c . startInterval . call ( this ) } , getState : function ( a , b ) { var c ; if ( ! ( c = d ( b ) . data ( "state" ) ) ) throw Error ( "vTicker: No state available from " + a ) ; return c } , isAnimatingOrSingleItem : function ( a ) { return a . animating || this . hasSingleItem ( a ) } , hasMultipleItems : function ( a ) { return 1 < a . itemCount } , hasSingleItem : function ( a ) { return ! c . hasMultipleItems ( a ) } ,
bindMousePausing : function ( a ) { return function ( a , e ) { return a . bind ( "mouseenter" , function ( ) { if ( ! e . isPaused ) return e . pausedByCode = ! 0 , c . stopInterval . call ( this ) , f . pause . call ( this , ! 0 ) } ) . bind ( "mouseleave" , function ( ) { if ( ! e . isPaused || e . pausedByCode ) return e . pausedByCode = ! 1 , f . pause . call ( this , ! 1 ) , c . startInterval . call ( this ) } ) } } ( this ) , setItemLayout : function ( a , b , c ) { var f ; a . css ( { overflow : "hidden" , position : "relative" } ) . children ( "ul" ) . css ( { position : "absolute" , margin : 0 , padding : 0 } ) . children ( "li" ) . css ( { margin : c . margin ,
padding : c . padding } ) ; return isNaN ( c . height ) || 0 === c . height ? ( a . children ( "ul" ) . children ( "li" ) . each ( function ( ) { if ( d ( this ) . height ( ) > b . itemHeight ) return b . itemHeight = d ( this ) . height ( ) } ) , a . children ( "ul" ) . children ( "li" ) . each ( function ( ) { return d ( this ) . height ( b . itemHeight ) } ) , f = c . margin + 2 * c . padding , a . height ( ( b . itemHeight + f ) * c . showItems + c . margin ) ) : a . height ( c . height ) } , defaultStateAttribs : function ( a , b ) { return { itemCount : a . children ( "ul" ) . children ( "li" ) . length , itemHeight : 0 , itemMargin : 0 , element : a , animating : ! 1 , options : b ,
isPaused : b . startPaused , pausedByCode : ! 1 } } } ; f = { init : function ( a ) { var b , e ; d ( this ) . data ( "state" ) && f . stop . call ( this ) ; b = jQuery . extend ( { } , g ) ; a = d . extend ( b , a ) ; b = d ( this ) ; e = c . defaultStateAttribs ( b , a ) ; d ( this ) . data ( "state" , e ) ; c . setItemLayout ( b , e , a ) ; a . startPaused || c . startInterval . call ( this ) ; if ( a . mousePause ) return c . bindMousePausing ( b , e ) } , pause : function ( a ) { var b ; b = c . getState ( "pause" , this ) ; if ( ! c . hasMultipleItems ( b ) ) return ! 1 ; b . isPaused = a ; b = b . element ; if ( a ) return d ( this ) . addClass ( "paused" ) , b . trigger ( "vticker.pause" ) ;
d ( this ) . removeClass ( "paused" ) ; return b . trigger ( "vticker.resume" ) } , next : function ( a ) { var b ; b = c . getState ( "next" , this ) ; if ( c . isAnimatingOrSingleItem ( b ) ) return ! 1 ; c . restartInterval . call ( this ) ; return c . moveUp ( b , a ) } , prev : function ( a ) { var b ; b = c . getState ( "prev" , this ) ; if ( c . isAnimatingOrSingleItem ( b ) ) return ! 1 ; c . restartInterval . call ( this ) ; return c . moveDown ( b , a ) } , stop : function ( ) { c . getState ( "stop" , this ) ; return c . stopInterval . call ( this ) } , remove : function ( ) { var a ; a = c . getState ( "remove" , this ) ; c . stopInterval . call ( this ) ;
a = a . element ; a . unbind ( ) ; return a . remove ( ) } } ; return d . fn . vTicker = function ( a ) { return f [ a ] ? f [ a ] . apply ( this , Array . prototype . slice . call ( arguments , 1 ) ) : "object" !== typeof a && a ? d . error ( "Method " + a + " does not exist on jQuery.vTicker" ) : f . init . apply ( this , arguments ) } } ) ( jQuery ) ;