var $$ = $.fn;

$$.extend({
  SplitID : function()
  {
    return this.attr('id').split('-').pop();
  },

  Slideshow : {
    Ready : function()
    {
	  $('#rotator ul.items li:not(#slide-overlay)').hide();
      $('#rotator ul.nav li:not(#prev, #next)')
        .hover(
          function() {
            $(this).addClass('hover');
          },
          function() {
            $(this).removeClass('hover');
          }
        )
        .click(
          function() {
           // $$.Slideshow.Interrupted = true;

			$('li#slide-overlay').show();

            $('#rotator ul.items li:not(#slide-overlay)').hide();
            $('#rotator ul.nav li').removeClass('on');

            $('#rotator li#slide-' + $(this).SplitID()).show();
            $(this).addClass('on');
            
			$('li#slide-overlay').fadeOut(1500);
			
			var clickedItem =  $(this).SplitID();

          $$.Slideshow.Counter = clickedItem;
          $$.Slideshow.Counter++;

          if ($$.Slideshow.Counter > $('li.tmpSlide').length) {
            $$.Slideshow.Counter = 1;
          }
          }
        );
        
        $('#rotator ul.nav li#prev').click(function() {
            //$$.Slideshow.Interrupted = true;
            
			previousItem = $('#rotator ul.nav li.on').attr('id').split('-').pop() - 1;
			if(previousItem > 0) {
				$('li#slide-overlay').show();
				$('#rotator ul.items li:not(#slide-overlay)').hide();
				$('#rotator ul.nav li').removeClass('on');
				$('#rotator ul.items li#slide-' + previousItem).show();
				$('#rotator ul.nav li#nav-' + previousItem).addClass('on');
				$('li#slide-overlay').fadeOut(1500);

          $$.Slideshow.Counter--;

          if ($$.Slideshow.Counter > $('li.tmpSlide').length) {
            $$.Slideshow.Counter = 1;
          }
			};
            
		});
        
        $('#rotator ul.nav li#next').click(function() {
            //$$.Slideshow.Interrupted = true;
            
			var veryLastItem = $('#rotator ul.nav li:last-child').prev().attr('id').split('-').pop();
			var nextItem = $('#rotator ul.nav li.on').attr('id').split('-').pop();
			if(nextItem < veryLastItem) {
				$('li#slide-overlay').show();
				$('#rotator ul.items li:not(#slide-overlay)').hide();
				$('#rotator ul.nav li').removeClass('on');
				$('#rotator ul.items li#slide-' + nextItem).next().show();
				$('#rotator ul.nav li#nav-' + nextItem).next().addClass('on');
				$('li#slide-overlay').fadeOut(1500);

          $$.Slideshow.Counter++;

          if ($$.Slideshow.Counter > $('li.tmpSlide').length) {
            $$.Slideshow.Counter = 1;
          }
			};
			
		});

      this.Counter = 1;
      this.Interrupted = false;

      this.Transition();
    },

    Transition : function()
    {
      if (this.Interrupted) {
        return;
      }

      this.Last = this.Counter - 1;

      if (this.Last < 1) {
        this.Last = $('li.tmpSlide').length;
      }

      $('li#slide-' + this.Last).fadeOut(
        'slow',
        function() {
        
          // show overlay
          $('li#slide-overlay').show();
		  
		  // change items
		  $('#rotator ul.items li:not(#slide-overlay)').hide();
          $('#rotator ul.nav li').removeClass('on');
          $('li#nav-' + $$.Slideshow.Counter).addClass('on');
          $('li#slide-' + $$.Slideshow.Counter).show();
          
          // fade out overlay to reveal new item
          $('li#slide-overlay').fadeOut("slow");

          $$.Slideshow.Counter++;

          if ($$.Slideshow.Counter > $('li.tmpSlide').length) {
            $$.Slideshow.Counter = 1;
          }


          setTimeout('$$.Slideshow.Transition();', 10000);
        }
      );
    }
  }
});

$(document).ready(function(){
  
	/// genterate tabs
	function tabsFn(parent, head){
		//create a ul container for the tabs
		$(parent).prepend("<ul class=\"nav\"><\/ul>");
		$(parent + " ul.nav").append('<li id="prev"><a href="#">prev</a></li>');
		//create an array for the ids
		tabsArray=new Array();
		$(parent + " " + head).each(function(){
			thisIndex = $(parent + " " + head).index(this) + 1;
			$(parent + " ul.nav").append('<li id="nav-' + thisIndex + '"><a href="#' + tabsArray[thisIndex] + '">' + thisIndex + '<\/a><\/li>');
		});
		$(parent + " ul.nav").append('<li id="next"><a href="#">next</a></li>');

	}
	tabsFn("#rotator","li.tmpSlide");
	
	// run slideshow
    $$.Slideshow.Ready();

});