/*
 *	---------------------------------------------------------------------------
 *	Rotator v0.3
 *	---------------------------------------------------------------------------
 *  zalozeno na jQuery.
 *  Pro NetDirect s.r.o. vytvoril Martin Krolikowski (martin.krolikowski@netdirect.cz).
 *      inspirovan Tabs Tomase Musiola ;)
 */

jQuery.fn.ndRotator = function(ndTabsOptions){

	// Zakladni parametry = nastaveni elementu, ktere tvori rotator
	var settings = {   	
    	animation: true,
      tabListName: "div.listArt", // v cem jsou umisteny klikaci odkazy
      tabListItemName: "h3",      // co tvori klikaci odkaz
      tabContentName: "p.perex",  // v cem je obsah, ktery se ma rotovat
      activeClass: "active",      // trida aktivniho odkazu
      slideShow: true,
      slideShowTime: 5000	
	}
/*
	var settings = {   	
    	animation: true,
      tabListName: "ul.tabList",
      tabContentName: "div.tabContent",
      activeClass: "active",
      slideShow: true,
      slideShowTime: 2000	
	}
*/	


///////////// UVODNI NASTAVENI //////////////////////////////////////////////////////////

	var opts = $.extend(settings, ndTabsOptions);	

  var rotator = this; 
  
	var tabListFirstItem     =  opts.tabListName + " " + opts.tabListItemName + ":first";
	var tabListControl       =  opts.tabListName + " " + opts.tabListItemName + " a";
	var tabContentFirstItem  =  opts.tabContentName + ":first";
	var tabContentItem       =  opts.tabContentName;

	var showNext = false;
	var activeIndex = 0;
	var maxIndex = $(rotator).find(tabListControl).size() - 1;		
  

  $(rotator).find(tabListControl).eq(activeIndex).addClass(opts.activeClass);
  $(rotator).find(tabContentItem).hide();
  $(rotator).find(".imgBox").hide();
  
  $(rotator).find(".imgBox").eq(activeIndex).show();
  $(rotator).find(tabContentItem).eq(activeIndex).show();


  var timer;

//////////////////////////////////////// CASOVAC() function ///////////////////////////////
  function casovac()
  {
    if(needTimer && opts.slideShow)
    {
      timer = setTimeout(function(){next(activeIndex);}, opts.slideShowTime);
    }
  }
  
//////////////////////////////////////// NEXT() function ///////////////////////////////
  function next(helpIndex) 
  {
      clearTimeout(timer);
      needTimer = false;
      
    	$(rotator).find(tabListControl).each(function(){
          $(this).removeClass(opts.activeClass);
      });
      
      if(opts.animation)
      {
          $(rotator).find(tabContentItem).eq(helpIndex).fadeOut(100,skryto);    
      }
      else
      {
         $(rotator).find(tabContentItem).eq(helpIndex).hide();
         skryto();
      }
      
			$(rotator).find(".imgBox").hide();
      $(rotator).find(".imgBox").eq(helpIndex).show();

      if( helpIndex < maxIndex )
      { 
        helpIndex = helpIndex + 1;
        
      }
			else
      { 
        helpIndex = 0; 
      }    
      

      activeIndex = helpIndex;
      
  }
//////////////////////////////////////// SKRYTO() function ///////////////////////////////
  function skryto()
  {

    $(rotator).find(tabListControl).eq(activeIndex).addClass(opts.activeClass);
    $(rotator).find(tabContentItem).hide();
    
    needTimer = true;
    if(opts.animation)
    {
        $(rotator).find(tabContentItem).eq(activeIndex).fadeIn(500, casovac); 
        
        
    }
    else
    {
        $(rotator).find(tabContentItem).eq(activeIndex).show();
        casovac(); 
    }
    activeIndex++;
     
  }
                     
//////////////////////////////////////// CLICK function ///////////////////////////////
                 
  $(this).find(tabListControl).click(function(){
      
      //alert($(opts.tabListName).find("a").index(this));
      //if($(opts.tabListName).find("a").index(this) != activeIndex)
      {
          activeIndex = $(rotator).find(opts.tabListName).find("a").index(this);

          $(rotator).find(tabListControl).each(function(){
              $(this).removeClass(opts.activeClass);
          });
          
          $(this).addClass(opts.activeClass);
          needTimer = true;

          next(activeIndex);
      }
      return false;
		
	});
	
//// MAIN ///////////////////////////////////////////////////////////////////////////////
  
  needTimer = true;
  activeIndex = 0;
  skryto();	
	
}
         
