/** * jQuery arrowSteps plugin * Copyright Neil Kandalgaonkar, 2010 * * This work is licensed under the terms of the GNU General Public License, * version 2 or later. * (see http://www.fsf.org/licensing/licenses/gpl.html). * Derivative works and later versions of the code must be free software * licensed under the same or a compatible license. * * * DESCRIPTION * * Show users their progress through a series of steps, via a row of items that fit * together like arrows. One item can be highlighted at a time. * * * SYNOPSIS * * * * * */ ( function( $j ) { $j.fn.arrowSteps = function() { this.addClass( 'arrowSteps' ); var $steps = this.find( 'li' ); var width = parseInt( 100 / $steps.length, 10 ); $steps.css( 'width', width + '%' ); // every step except the last one has an arrow at the right hand side. Also add in the padding // for the calculated arrow width. var arrowWidth = parseInt( this.outerHeight(), 10 ); $steps.filter( ':not(:last-child)' ).addClass( 'arrow' ) .find( 'div' ).css( 'padding-right', arrowWidth.toString() + 'px' ); this.data( 'arrowSteps', $steps ); return this; }; $j.fn.arrowStepsHighlight = function( selector ) { var $steps = this.data( 'arrowSteps' ); var $previous; $j.each( $steps, function( i, step ) { var $step = $j( step ); if ( $step.is( selector ) ) { if ($previous) { $previous.addClass( 'tail' ); } $step.addClass( 'head' ); } else { $step.removeClass( 'head tail lasthead' ); } $previous = $step; } ); }; } )( jQuery );