/*
 *	jQuery carousel
 *	copyright 2009
 *
 *	@author 	Boy van Amstel
 *	@version 	1.0
 *
 *	Made for use with existing jquery.tabs.js
 *	
 *	Usage:
 *	Add class item[n] to every options.carousel and options.carouselControl
 *	Add options.carousel to every panel in the carousel
 *
 *	Changes 1.0:
 *	[28/10/2009]	- First release 
 */
 
jQuery.tabsCarousel = 
{
	build : function(options) {

		try {
		 
		 	if(jQuery(this).length < 1) return false;
		 
			// Default settings
			var defaults = {
				carousel: ".carouselTab",
				itemClass: "item",
				itemInactiveClass: "ui-tabs-hide",
				carouselControl: ".tabs li",
				controlActiveClass: "ui-tabs-selected",
				timeout: 5000
			}
	
			// Move to options
			var options = jQuery.extend(defaults, options);
			
			var object = this;
			
			jQuery(object).log("Class loaded on " + jQuery(object).attr("id"), "info", "jQuery.carousel");
			
			// Carousel
	    	var carouselItems = jQuery(object).find(options.carousel).size();
	        var carouselCounter = 1;
	        
	        // Function
			function doCarousel() {
					
	        	// Changing blocks
				jQuery(object).find(options.carousel)
					.addClass(options.itemInactiveClass);
					
				// Changing controls
				jQuery(object).find(options.carouselControl)
					.removeClass(options.controlActiveClass);
				
	        	// Check number of items
				if (carouselCounter >= carouselItems) {
					carouselCounter = 1;
				} else {
					carouselCounter = carouselCounter + 1;
				}

				// Changing blocks
         		jQuery(object).find(options.carousel + "." + options.itemClass + carouselCounter)
         			.removeClass(options.itemInactiveClass)

				// Changing controls
         		jQuery(object).find(options.carouselControl + "." + options.itemClass + carouselCounter)
         			.addClass(options.controlActiveClass);
				
			}
	        
	        // Setup the timer
	        jQuery(object).everyTime(options.timeout, 2, doCarousel);
	        
			var clickedElementClassName = null;
	        
	        // When hovering the object
			jQuery(object).hover(function() {

   				// Stop timer
				jQuery(object).stopTime(2);
			
			}, function() {

				// Not working correctly
/* 				carouselCounter = jQuery(object).find(options.carousel).index(jQuery(object.find(options.carousel + "." + options.itemActiveClass))); */

		        // Setup the timer
		        jQuery(object).everyTime(options.timeout, 2, doCarousel);
			
			});
				
			return this;
		}
		catch(err) {
			jQuery(this).log(err.toString(), "error", "jQuery.carousel");
			return false;
		}
	}
};

jQuery.fn.extend({
		tabsCarousel: jQuery.tabsCarousel.build
});	
