(function($) {
 
	$.fn.wcarousel = function(settings) {
		var config = { };

		if (settings) $.extend(config, settings);
		
		initCarousel=function(obj) {
			//get thumbnails width
//			var ctwidth=0;
//			$(obj).find('.wcarousel-thumbnails ul li').each(function(){
//				ctwidth+=$(this).outerWidth()+parseInt($(this).css('margin-right'));
//			});

			var fullLIWidth=$(obj).find('.wcarousel-thumbnails ul li').outerWidth() + parseInt($(obj).find('.wcarousel-thumbnails ul li').css('margin-right'));
			var initialPosition=$(obj).find('.wcarousel-thumbnails').outerWidth()/2 - $(obj).find('.wcarousel-thumbnails ul li').outerWidth()/2;
			var cdescription=$(obj).find('.wcarousel-description');
			var newimg, newtitle;
			
			if (cdescription.find('div').text()=='') cdescription.hide().css({bottom:-(cdescription.outerHeight())});
			
			//setup initial thumbnails position
			$(obj).find('.wcarousel-thumbnails ul').css('left', initialPosition);
			//change opacity
			$(obj).find('.wcarousel-thumbnails ul li:not(:first)').fadeTo(2000, 0.6);
			$(obj).find('.wcarousel-thumbnails ul li:first').addClass('active');
			
			//setup events
			$(obj).find('.wcarousel-thumbnails ul li a').click(function(){
				if ($(this).parent().hasClass('active')) return false;
				
				var parentul=$(this).parent().parent();
				//remove active class
				parentul.find('.active').removeClass('active').fadeTo(1000, 0.6);
				
				//fadeIN
				$(this).parent().addClass('active').fadeTo(1000, 1);
				
				//move thumbnails
				var newpos=initialPosition - (fullLIWidth*$(this).parent().index());
				parentul.stop().animate({left:newpos},{queue:false, duration:1000, easing:'easeInOutBack'});
				
				//set big image
				newimg = $(this).attr('href');
				newtitle = $(this).attr('title');

				//create new image element
				$(obj).find('.wcarousel-bigimg img').eq(0).css('z-index', -1)
					.after('<img src="'+newimg+'" alt="'+newtitle+'" style="display:none;" />').next().css('z-index', 1).fadeIn(700, function(){
						$(this).prev().remove();
						if (newtitle=='') return;
						cdescription.find('div').text(newtitle)
						.parent().stop().animate({bottom:0},{duration:500, queue:false});

					});
				
				//hide description
				cdescription.stop().animate({bottom:-(cdescription.outerHeight())},{duration:500, queue:false});
				return false;
			});
			
		}

		this.each(function() {
			initCarousel(this);
		});

		return this;

	};

})(jQuery);


