jQuery.fn.rotateBackgrounds = function(options) {

	var cache = [];
	var icons = $('a', this);
	var i = 1;
	var bgLoading = getLoading();
	options.containerWidth = $(options.bgContainer).width();
	var scrollInterval = setInterval(function(){
		if(i >= icons.length)
		{
			i = 0;
		}
		var currentImage = options.images[i];
		var currentIcon = icons[i];

		$('.'+options.hoverClass).removeClass(options.hoverClass);
		$(currentIcon).addClass(options.hoverClass);

		effectVision(i);
		i++;
	},60000);

	$(icons).click(function(){
		clearInterval(scrollInterval);
		$('.'+options.hoverClass).removeClass(options.hoverClass);
		$(this).addClass(options.hoverClass);

		$(icons).each(function(k,el)
		{
			if($(el).hasClass(options.hoverClass))
			{
				effectVision(k);
			}
		});
		return false;
	});

	function effectVision(ind)
	{
		$(options.bgContainer).css({width:0 });

		if(typeof cache[options.images[ind]] != "undefined")
		{
			$(options.bgContainer).css({'background-image': 'url('+options.images[ind]+')' });
			$(options.bgContainer).animate({width:options.containerWidth}, 700);
			clearLoading();
		}
		else
		{
			setLoading();
			var cacheImage = document.createElement('img');
			cacheImage.src = options.images[ind];
			$(cacheImage).load(function(){
				$(options.bgContainer).css({'background-image': 'url('+options.images[ind]+')' });
				$(options.bgContainer).animate({width:options.containerWidth}, 700);
				cache[options.images[ind]] = 1;
				clearLoading();
			});
		}



		var $titles = $(options.textContainer+' .title');

		$titles.each(function(k, el)
		{
			$(el).attr('src', options.title[k][ind]);
		});
		var $desc = $(options.textContainer+' .description');

		$desc.each(function(k, el)
		{
			$(el).attr('src', options.description[k][ind]);
		});
		//$(options.textContainer+' .description').attr('src', options.description[ind]);

	}
	function getLoading()
	{
		return $('.main-vision .in').css('background');
	}
	function setLoading()
	{
		$('.main-vision .in').css('background', bgLoading);
	}
	function clearLoading()
	{
		$('.main-vision .in').css('background', 'none');
	}
	return this;
};
