/* jquery.rotator.js
   (c) 2010 Chase Cathcart. Licensed under New BSD License.
*/
    
(function(jQuery) {
  var defaults = { timeout: 2, showNumbers: false };
  var options;
  var timeout;
  var items;
  var toolbox;
  var i=0;
  var paused=false;

  function doRotate() {
    toolbox.children(".icon").removeClass('selected');
    items.hide();
    toolbox.children(".icon").eq(i).addClass('selected');
    items.eq(i).show();
    i = i < items.length-1 ? i+1 : 0;
    timeout = setTimeout(function(){doRotate()}, options.timeout*1000);
  }

  function doPause() {
    toolbox.children(".play").text("Play");
    toolbox.children(".play").addClass('paused');
    clearTimeout(timeout);
    paused = true;
  }

  function doPlay() {
    toolbox.children(".play").text("Pause");
    toolbox.children(".play").removeClass('paused');
    timeout = setTimeout(function(){doRotate()}, 500);
    paused = false;
  }

  function doPanel(j) {
      i = j;
      if ( !paused ){toolbox.children(".play").trigger('click');}
      toolbox.children(".icon").removeClass('selected');
      items.hide();
      toolbox.children(".icon").eq(i).addClass('selected');
      items.eq(i).show();
      i = i < items.length-1 ? i+1 : 0;
  }

  jQuery.fn.rotator = function(new_options) {
    items = this.children("ul").children("li");
    setOptions(new_options);

    this.append('<div class="tools"><span class="play">Pause</span></div>');
    toolbox = this.children(".tools");
    for ( var i=0; i < items.length; i++ ) { 
        var num="";
        if ( options.showNumbers ) num=i+1;
        toolbox.append('<span class="icon">'+num+'</span>'); 
    }
    toolbox.children(".icon").each(function (i){ 
         jQuery(this).click(function() { doPanel(i); });
    });

    doRotate();
    toolbox.children(".play").toggle(function() { doPause(); }, function() { doPlay(); });

    return options;
  };

  function setOptions(new_options) {
    options = jQuery.extend({}, defaults, options, new_options);
  }
})(jQuery);


