(function($){  
  $.fn.activebanner = function(config){
    var defaults = {
      frame: 1,
      interval: 1000,
      size: 0,
      initial: 0,
      reset: true,
      onComplete: null
    }
    var options = $.extend(defaults, config);

    var action = function(obj){
      var count = parseInt($(obj).attr('count'));
      count = isNaN(count) ? 0 : count;

      count += 1;
      if (count >= options.frame) {
        $(obj).removeAttr('count');
        $(obj).removeAttr('tid');
        if (options.reset == true) {
          $(obj).css('backgroundPosition', '0px 0px');
        }
        if (options.onComplete != null) {
          options.onComplete();
        }
        return;
      }

      $(obj).css('backgroundPosition', '-' + (count * options.size) + 'px 0');

      $(obj).attr('count', count);
      var timeoutID = window.setTimeout(function(){
        action(obj);
      }, options.interval); 
      $(obj).attr('tid', timeoutID);
    };

    var obj = this;
    var timeoutID = window.setTimeout(function(){
      action(obj);
    }, options.initial); 
    $(obj).attr('tid', timeoutID);
  }
})(jQuery);

