;(function($)
{
	$.fn.carousel = function(options)
	{
		if (!options)
			return;

		var $imgs = options['imgs'];
		var $listItems = options['listItems'];
		var $listClick = options['listClick'];
		var rollover = options['rollover'] ? true : false;
		var interval = options['interval'] ? options['interval'] : false;
		
		//if (!$listItems || !$listItems.length)
		//	return;
			
		//if ($imgs)
		//	return;
			
		var $cImg, cIndex, cTime, tmp = this.css('position');
		if (tmp != 'relative' && tmp != 'absolute')
			this.css({ position: 'relative' });
			
		$imgs.hide();
		
		setActiveIndex(0);
		
		function setActiveIndex(index)
		{
			if (index == cIndex)
				return;
				
			if (interval)
				clearTimeout(cTime);
			
			if ($imgs)
			{
				if ($cImg)
				{
					tmp = $cImg.position();
					$cImg.fadeOut(500);
				}
				
				$cImg = $($imgs.get(index));
				$cImg.fadeIn(500);
				$cImg.css({
					position: 'absolute',
					top: 0,
					left: 0
				});
			}
			
			if ($listItems)
			{
			    $($listItems.get(cIndex)).removeClass('selected');
			    $($listItems.get(index)).addClass('selected');
			}
			
			cIndex = index;
			
			if (interval)
				cTime = setTimeout(function() { setActiveIndex((index + 1 >= ($listItems ? $listItems.length : $imgs.length)) ? 0 : index + 1); }, interval);
		}
		
		if ($listItems)
		{
		    $listItems.each(function(i) {
			    if (rollover)
			    {
				    $(this).mouseenter(function(){ setActiveIndex(i); });
			    }
			    else
			    {
				    tmp = ($listClick) ? $(this).find($listClick) : $(this);
				    tmp.click(function() {
					    setActiveIndex(i);
					    return false;
				    });
			    }
		    });
		}
	};
})(jQuery);
