Simple jQuery News Ticker Plugin

Very lightweight jQuery dependent news ticker for use with an ordered or un-ordered list. https://github.com/i-like-robots

by envira

HTML

<div class="pull-left"><a href="rssfeedlink">latest news</a></div>
<ol id="sample" class="ticker">
    <li>Item 1. Lorem ipsum doler sit amet.<a href="link1" class="read">Read more</a></li>
    <li>Item 2. Lorem ipsum doler sit amet.<a href="link2" class="read">Read more</a></li>
    <li>Item 3. Lorem ipsum doler sit amet.<a href="link3" class="read">Read more</a></li>
    <li>Item 4. Lorem ipsum doler sit amet.<a href="link4" class="read">Read more</a></li>
    <li>Item 5. Lorem ipsum doler sit amet.<a href="link5" class="read">Read more</a></li>
</ol>

CSS

.ticker {
    margin:0;
    padding:5px;
    list-style-type:none;
    background:#F7F7D0;
    border:1px solid #ccc;
}
    .ticker li {
        line-height:1.5;
    }

.ticker-active {
    height:1.5em;
    overflow:hidden;
}
    .ticker-active li {
        display:none;
        overflow:hidden;
        white-space:nowrap;
    }
.read{
    float: right;
}
.pull-left{
    float:left;
    border-right: 1px solid #000000;
    padding:8px;
}

JavaScript

/**
 * @author Matt Hinchliffe <http://www.maketea.co.uk>
 * @modified 13/05/2011
 * @title Simple jQuery News Ticker
 */
(function($)
{
    $.fn.Ticker = function(options)
    {
        var defaults = {

            // Time to display each news item. (integer, milliseconds)
            pause: 5000,

            // Time taken to fade in next news item. (integer, milliseconds)
            fadeIn: 800,

            // Time taken to fade out current news item. (integer, milliseconds)
            fadeOut: 800,

            // Pause between displaying each item when fading between items. (integer, milliseconds)
            delay: 500,

            // Next news item typed out one character at a time. If false item will fade in. (boolean)
            typewriter: false,

            // Time to type each character if using the typewriter effect (integer, milliseconds)
            speed: 35,

            // Character to use to mimic a computer cursor if using the typewriter effect (string|boolean)
            cursor: '_',

            title:'news',
            title:true
        };

        // Merge default options with user options
        var opts = $.extend({}, defaults, options);

        return $(this).each(function()
        {
            var list = $(this), typewriter = {}, interval;

            // Activate ticker and display first item
            list
                .addClass('ticker-active')
                .children(':first')
                .css('display', 'block');

            function changeItem()
            {
                var item = list.children(':first'),
                    next = item.next(),
                    copy = item.clone();

                clearTimeout(interval);

                // Append copy of current item to bottom of list
                $(copy)
                    .css('display', 'none')
                    .appendTo(list);

                // Fade current item out, remove from DOM then animate the next item
               ...