(function($) {
    $.fn.listTypewriter = function(options) {
        var defaults = {
            speed: 40,
            delay: 3000,
            list: []
        };
        var options = $.extend(defaults, options);
        
        this.each(function() {
            var $ele = $(this), str = options.list[0], progress = 0, current = 0;
            $ele.text('');
            function i() {
                $ele.text(str.substring(0, progress++) + (progress & 1 ? '_' : ''));
                if (progress >= str.length) {
                    $ele.text(str);
                    clearInterval(timer);
                    current++;
                    if (current >= options.list.length)
                        current = 0;
                    str = options.list[current];
                    progress = 0;
                    var timer_delay = setTimeout(function(){
                        $ele.text('');
                        timer = setInterval(i, options.speed);
                    }, options.delay);
                }
            }
            var timer = setInterval(i, options.speed);
        });
        return this;
    };
})(jQuery);
