jQuery.fn.dotspinner = function(options)
{
    settings = jQuery.extend({
        prefix:'',
        delay: 200,
        tokens: ['.&nbsp;&nbsp;&nbsp;','..&nbsp;&nbsp','...&nbsp;','....']
    }, options);

    if(settings.stop){
        return this.each(function(){
            $(this).data("stop_spinning",true);
        });
    }

    return this.each(function(){
        dotspinner_spin(this, settings);
    });
};

dotspinner_spin = function (el, options)
{
    //if(jQuery.data(el, "spinning"))
    //    return;
    //jQuery.data(el, "spinning", true);
    jQuery.data(el, "stop_spinning",false);
    var current = 0
    var orig_html = $(el).html()
    var spin_element = function ()
    {
        if ((!el.offsetTop && !el.offsetWidth) || jQuery.data(el,"stop_spinning")){
            clearInterval(spin_int);
            $(el).html(orig_html);
            return false;
        }
        if (options.tokens.length==current)
            current = 0;
        text=options.prefix + options.tokens[current++];
        $(el).html(text);
        return true;
    }
    var spin_int = setInterval(spin_element, options.delay);
    return spin_int;
}
