$(function() {

  mainSlider('#mainSlider','#mainSlider .mainSliderContent ul',$('#mainSlider').width()-2,'#mainSlider .mainSliderBar .bubbles ul');
  
});

function mainSlider(thisSlider,thisSliderSlides,sliderWidth,thisSliderNav)
{
  if ($(thisSlider).length)
  {
    var currentSlide = 0;
    var slideWidth = sliderWidth;
    var totalSlides = $(thisSliderSlides+' li').length;
    var autoRotator;
    
    //update counter on load
    $(thisSlider+' .counter').text(parseInt(currentSlide+1)+' of '+totalSlides);
    
    //update title on load
    $(thisSlider+' .title').text($(thisSliderSlides+' li:eq(0) h2').text());

    //set width of slider ul
    $(thisSliderSlides).width(totalSlides*slideWidth);
    
    $(thisSliderNav).empty();
    $(thisSliderSlides+' li').each(function(i) {
       i+=1;
      //place bubble
      $('<li><a href="#slide'+i+'">'+i+'</a></li>').appendTo($(thisSliderNav));
    }).ready(function() {
      $(thisSliderNav+' li:eq(0) a').addClass('active');
    });
  
    $(thisSliderNav+' li').each(function(i) {
      $(this).bind('click.slideClick'+i, function() {
        currentSlide = i;
        $(thisSliderNav+' li a').removeClass('active');
        $(this).find('a').addClass('active');
        var currentPosition = -currentSlide*slideWidth+'px';
        $(thisSliderSlides).stop().animate({"left": currentPosition}, "slow");
        updateCounter(i+1);
        updateTitle(i);
        clearInterval(autoRotator);
        autoRotator = setInterval(function() {
          nextSlide();
        },6500);
        return false;
      });
    }).ready(function() {
      //bind back
      $(thisSlider+' .controls .btn_prev').bind('click.slidePrev',function() {
        currentSlide-=1;
        if(currentSlide < 0) currentSlide=totalSlides-1;
        $(thisSliderNav+' li a').removeClass('active');
        $(thisSliderNav+' li:eq('+currentSlide+') a').addClass('active');
        var currentPosition = -currentSlide*slideWidth+'px';
        $(thisSliderSlides).stop().animate({"left": currentPosition}, "slow");
        updateCounter(currentSlide+1);
        updateTitle(currentSlide);
        clearInterval(autoRotator);
        autoRotator = setInterval(function() {
          nextSlide();
        },6500);
        return false;
      });
      
      $(thisSlider+' .controls .btn_next').bind('click.slideNext',function() {
        currentSlide+=1;
        if(currentSlide > (totalSlides-1)) currentSlide=0;
        $(thisSliderNav+' li a').removeClass('active');
        $(thisSliderNav+' li:eq('+currentSlide+') a').addClass('active');
        var currentPosition = -currentSlide*slideWidth+'px';
        $(thisSliderSlides).stop().animate({"left": currentPosition}, "slow");
        updateCounter(currentSlide+1);
        updateTitle(currentSlide);
        clearInterval(autoRotator);
        autoRotator = setInterval(function() {
          nextSlide();
        },6500);
        return false;
      });
    });
    
    function updateCounter(i) {
      $(thisSlider+' .counter').text(i+' of '+totalSlides);
    }
    
    function updateTitle(i) {
      $(thisSlider+' .title').text($(thisSliderSlides+' li:eq('+i+') h2').text());
    }
    
    function autoRotator() {
      return setInterval(function() {
        nextSlide();
      },6500);
    }
    
    function nextSlide() {
      currentSlide+=1;
      if(currentSlide > (totalSlides-1)) currentSlide=0;
      $(thisSliderNav+' li a').removeClass('active');
      $(thisSliderNav+' li:eq('+currentSlide+') a').addClass('active');
      var currentPosition = -currentSlide*slideWidth+'px';
      $(thisSliderSlides).stop().animate({"left": currentPosition}, "slow");
      updateCounter(currentSlide+1);
      updateTitle(currentSlide);
      return false;
    }
    
    //start autorotator
    autoRotator = autoRotator();
    
    $(thisSlider+' .mainSliderContent').mouseover(function() {
      clearInterval(autoRotator);
    });
    
    $(thisSlider+' .mainSliderContent').mouseout(function() {
      autoRotator = setInterval(function() {
        nextSlide();
      },6500);
    });
    
  }
}
