(function($) {

  $.fn.btwitter = function(options) {
 
    var
      $this = $(this),
      defaults = {
        'autoScroll': true, //not implemented yet
        'effectTime': 600,
        'scrollPause': 4000,
        'effect': 'fade',
        'debug': false,
        'prevButton': '#tweet_prev',
        'nextButton': '#tweet_next'
      },
			settings = $.extend({}, defaults, options);

    if(settings.debug)
      console.log('plugin btwitter loaded successfully.');

    // hide elements
    
    countElements = $this.children().length;
    if(countElements < 0) {
      if(settings.debug)
        console.log('no twitter elements found.');
      return false;
    }

    // get first element
    startItem = 1;

    
    if(settings.autoScroll) {
      var stop_rotating = false;
      
      var scrolled = startItem;
      moveToNext = $.doTimeout(settings.scrollPause, function() {
         if(!stop_rotating) {

           getNextTweet();
           return true;
        }
      });
      
      
    }


    $(settings.prevButton).click(function() {
      getPrevTweet();
      stop_rotating = true;
      return false;
    });

    $(settings.nextButton).click(function() {
      getNextTweet();
      stop_rotating = true;
      return false;
    });

    // function for getting the next tweet or the first one
    function getNextTweet() {
      if(scrolled < countElements){
       next = scrolled + 1;
      }else {
       next = 1;
      }
      changeTweet(scrolled, next);
      scrolled = next;
    }
    // function for getting the previous or last tweet
    function getPrevTweet() {
      if(scrolled - 1 < 1) {
        next = countElements;
      }else {
        next = scrolled - 1;
      }
      changeTweet(scrolled, next);
      scrolled = next;
    }

    function changeTweet(current, next) {
       
       $("#tweet-"+current).stop(true, true).fadeOut(settings.effectTime);
       $("#tweet-"+next).stop(true, true).fadeIn(settings.effectTime);
    }

  }
})(jQuery);

