/* =========================================================
// jquery.carousel.js

// Date: 2009-07-07
// Author: Marcus Viefeld
// Web: http://www.viefeld.net
// ========================================================= */

$.fn.infiniteCarousel = function () {

  function repeat(str, num) {
    return new Array( num + 1 ).join( str );
  }
 
  return this.each(function () {
    var $wrapper = $('> div', this).css('overflow', 'hidden'),
      $slider = $wrapper.find('> ul'),
      $items = $slider.find('> li'),
      $single = $items.filter(':first'),

      autoScroll = 1,
      autoScrollK = 1;
      
      singleWidth = $single.outerWidth(), 
      visible = 1, //Math.ceil($wrapper.innerWidth() / singleWidth), // note: doesn't include padding or border
      currentPage = 1,
      pages = Math.ceil($items.length / visible);      


    // 1. Pad so that 'visible' number will always be seen, otherwise create empty items
   /* if (($items.length % visible) != 0) {
      $slider.append(repeat('<li class="empty" />', visible - ($items.length % visible)));
      $items = $slider.find('> li');
    }*/

    // 2. Top and tail the list with 'visible' number of items, top has the last section, and tail has the first
    $items.filter(':first').before($items.slice(- visible).clone().addClass('cloned'));
    $items.filter(':last').after($items.slice(2, visible+2).clone().addClass('cloned')).after($items.slice(1, visible+1).clone().addClass('cloned')).after($items.slice(0, visible).clone().addClass('cloned'));
    //$items = $slider.find('> li'); // reselect
    
    
    // 3. Set the left position to the first 'real' item
    $wrapper.scrollLeft(singleWidth * visible);
    
    // 4. paging function
    function gotoPage(page, click) {
    	if(autoScroll || click == 1)
    	{
		  var dir = page < currentPage ? -1 : 1,
			n = Math.abs(currentPage - page),
			left = singleWidth * dir * visible * n;
		  
		  $wrapper.filter(':not(:animated)').animate({
			scrollLeft : '+=' + left
		  }, 500, function () {
			if (page == 0) {
			  $wrapper.scrollLeft(singleWidth * visible * pages);
			  page = pages;
			} else if (page > pages) {
			  $wrapper.scrollLeft(singleWidth * visible);
			  // reset back to start position
			  page = 1;
			} 
	
			currentPage = page;
		  });
      
		}
      
      return false;
    }
    
    function stopAutoScroll()
    {
    	autoScroll = 0;
    }
    
    function startAutoScroll()
    {
    	autoScrollK++;
    	autoScroll = autoScrollK;

		AutoScroll(autoScrollK);
    }
    
    function waitAutoScroll()
    {
    
    	if ($('#facebox').is(':hidden')) 
    		startAutoScroll();
    	else 
    		var timer = setTimeout(function() { waitAutoScroll(); }, 4 * 1000);
    }
    
    function AutoScroll(k)
    {
    	if (autoScroll == k)
	    	var timer = setTimeout(function() { gotoPage(currentPage + 1); AutoScroll(k) }, 4 * 1000);
    }
    
    
    
    
    $wrapper.after('<div class="trans_left"></div><div class="trans_right"></div><a class="arrow back">&lt;</a><a class="arrow forward">&gt;</a>');
    
    // 5. Bind to the forward and back buttons
    $('a.back', this).click(function () {
    	stopAutoScroll();
      return gotoPage(currentPage - 1, 1);
    });
    
    $('a.forward', this).click(function () {
    	stopAutoScroll();
      return gotoPage(currentPage + 1, 1);
    });
    
    // create a public interface to move to a specific page
    $(this).bind('goto', function (event, page) {
      gotoPage(page);
    });

    $('.cloned a[rel*=facebox]').facebox();
    $('.blink_head').hover(
		function() { $(this).css('border-left-color','#f6e51e'); },
		function() { $(this).css('border-left-color','#fff'); }
	);
	$('.blink_head').click(function() { stopAutoScroll(); });
	
	$(this).hover(
		function() { stopAutoScroll(); },
		function() { waitAutoScroll(); }
	);

	
	startAutoScroll();

  }); 
};

