topical media & game development

talk show tell print

lib-jquery-plugin-news-jquery.accessible-news-slider.js / js



  /*
  
          ----------------------------------------------------------------------------------------------------
          Accessible News Slider
          ----------------------------------------------------------------------------------------------------
          
          Author:
          Brian Reindel
          
          Author URL:
          http://blog.reindel.com
  
  	License:
  	Unrestricted. This script is free for both personal and commercial use.
  
  */
  
  jQuery.fn.accessNews = function( settings ) {
          settings = jQuery.extend({
          headline : "Top Stories",
          speed : "normal",
                  slideBy : 2
      }, settings);
      return this.each(function() {
                  jQuery.fn.accessNews.run( jQuery( this ), settings );
      });
  };
  jQuery.fn.accessNews.run = function( this, settings ) {
          jQuery( ".javascript_css", this ).css( "display", "none" );
          var ul = jQuery( "ul:eq(0)", this );
          var li = ul.children();
          if ( li.length > settings.slideBy ) {
                  var next = jQuery( ".next > a", this );
                  var back = jQuery( ".back > a", this );
                  var liWidth = jQuery( li[0] ).width();
                  var animating = false;
                  ul.css( "width", ( li.length * liWidth ) );
                  next.click(function() {
                          if ( !animating ) {
                                  animating = true;
                                  offsetLeft = parseInt( ul.css( "left" ) ) - ( liWidth * settings.slideBy );
                                  if ( offsetLeft + ul.width() > 0 ) {
                                          back.css( "display", "block" );
                                          ul.animate({
                                                  left: offsetLeft
                                          }, settings.speed, function() {
                                                  if ( parseInt( ul.css( "left" ) ) + ul.width() <= liWidth * settings.slideBy ) {
                                                          next.css( "display", "none" );
                                                  }
                                                  animating = false;
                                          });
                                  } else {
                                          animating = false;
                                  }
                          }
                          return false;
                  });
                  back.click(function() {
                          if ( !animating ) {
                                  animating = true;
                                  offsetRight = parseInt( ul.css( "left" ) ) + ( liWidth * settings.slideBy );
                                  if ( offsetRight + ul.width() <= ul.width() ) {
                                          next.css( "display", "block" );
                                          ul.animate({
                                                  left: offsetRight
                                          }, settings.speed, function() {
                                                  if ( parseInt( ul.css( "left" ) ) == 0 ) {
                                                          back.css( "display", "none" );
                                                  }
                                                  animating = false;
                                          });
                                  } else {
                                          animating = false;
                                  }
                          }
                          return false;
                  });
                  next.css( "display", "block" )
                          .parent().after( [ "<p class=\"view_all\">", settings.headline, " - ", li.length, " total ( <a href=\"#\">view all</a> )</p>" ].join( "" ) );
                  jQuery( ".view_all > a, .skip_to_news > a", this ).click(function() {
                          var skip_to_news = ( jQuery( this ).html() == "Skip to News" );
                          if ( jQuery( this ).html() == "view all" || skip_to_news ) {
                                  ul.css( "width", "auto" ).css( "left", "0" );
                                  next.css( "display", "none" );
                                  back.css( "display", "none" );
                                  if ( !skip_to_news ) {
                                          jQuery( this ).html( "view less" );
                                  }
                          } else {
                                  if ( !skip_to_news ) {
                                          jQuery( this ).html( "view all" );
                                  }
                                  ul.css( "width", ( li.length * liWidth ) );
                                  next.css( "display", "block" );
                          }
                          return false;
                  });
          }
  };


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.