//FluidThinking JQuery Slide Show v1.0lrdvp
//Copyright - 2008 - All Rights Reserved
var indicatorSettings;
(function($) {
	
$.fn.ftSlideShow = function (settings) {
	settings = $.extend({
		containerId: $(this).attr('id'),
		imageSrcs: new Array(),
		fadeInInterval: 500,
		rotateInterval: 5000,
		restartInterval: 12000,
		indicatorActive: 'ftInidcatorActive',
		indicator: 'ftIndicator',
		indicatorClass: 'ftIndicator',
		currentImage: 0,
		zIndexStart: 100,
		settingsAdjust: false,
		running: false,
		onLoaded: function() {}
	}, settings);

	settings.firstImage = new Image(settings.width, settings.height);
	settings.firstImage.onload = function() { ftSlideShowRotate(settings); };
	settings.firstImage.src = settings.imageSrcs[0];
	settings.maxZIndex = settings.zIndexStart + settings.imageSrcs.length;
	//for faster safari and ie6 load include this image in the inline html doc
	var randomnumber=Math.floor(Math.random()*11);
	if(!$('#'+settings.containerId +' .ftImage').length >= 1)
		$(this).html('<img class = \"ftImage activeImage ft0\" style = \"z-index:'+settings.maxZIndex+'\" src = "'+settings.firstImage.src+'?'+randomnumber+'" />');
	if(settings.imageSrcs.length > 1) {
		for(var i = 1; i < settings.imageSrcs.length; i++) {
			$(this).prepend('<img class = \"ftImage ftNotActive ft'+ i +'\" style = \"z-index:'+(settings.maxZIndex-i)+'\" src = "'+settings.imageSrcs[i]+'?'+randomnumber+'" />');
		}
	}
	//loop through and check to see if all images are loaded
	setTimeout(function() {ftSlideShowLoadTest(settings);}, 100);
};

})(jQuery)
var ieIterator = 0;
function ftSlideShowLoadTest(settings) {
	var loadComplete = true;
	ieIterator++;
	$.each($('#'+settings.containerId+' .ftImage'), function() {
		if(!this.complete)
			loadComplete = false;
	});
	if(loadComplete || ieIterator == 4)
		settings.onLoaded();
	else
		setTimeout(function() {ftSlideShowLoadTest(settings);}, 1000);
}

function ftSlideShowRotate(settings) {
	if($('#'+settings.containerId).attr('alt') == 'running') {
		if(settings.running) {
			var tempNextImage = settings.currentImage + 1;
			if(tempNextImage >= settings.imageSrcs.length)
				tempNextImage = 0;
			var nextLoaded = false;
			$.each($('#'+settings.containerId+' .ft'+tempNextImage), function() {
				if(this.complete)
					nextLoaded = true;
			});
			if(nextLoaded) {
				$('#'+settings.containerId+' .ftImage').css('opacity', 1);
				settings.previousImage = settings.currentImage;
				settings.currentImage = tempNextImage;
				//custom indicators
				$('.'+settings.indicatorClass+settings.previousImage).animate({
					className: settings.indicator
				}, settings.fadeInInterval);
				$('.'+settings.indicatorClass+settings.currentImage).animate({
					className: settings.indicatorActive
				}, settings.fadeInInterval);
	
				$('#'+settings.containerId +' .activeImage').animate({
					opacity: .1
				}, settings.fadeInInterval, 'linear', function() {
					$('#'+settings.containerId +' .activeImage').css('z-index', (settings.maxZIndex - settings.imageSrcs.length));
					$('#'+settings.containerId +' .activeImage').removeClass('activeImage');
					$('#'+settings.containerId+' .ft'+settings.currentImage).addClass('activeImage');
					$('#'+settings.containerId+' .activeImage').css('z-index', settings.maxZIndex);
					var currentZIndex = 0;
					for(i = 0; i < settings.imageSrcs.length; i++) {
						if(i != settings.previousImage && i != settings.currentImage) {
							currentZIndex = parseInt($('#'+settings.containerId+' .ft'+i).css('z-index')) + 1;
							$('#'+settings.containerId+' .ft'+i).css('z-index', currentZIndex);
						}
					}
					if(settings.settingsAdjust)
						eval('indicatorSettings'+settings.settingsAdjust+' = settings;');
					else
						indicatorSettings = settings;
					settings.interval = setTimeout(function() {ftSlideShowRotate(settings);}, settings.rotateInterval);
				});
			} else {
				if(settings.settingsAdjust)
					eval('indicatorSettings'+settings.settingsAdjust+' = settings;');
				else
					indicatorSettings = settings;
				settings.interval = setTimeout(function() {ftSlideShowRotate(settings);}, settings.rotateInterval);//*/
			}
		} else {
			$('#'+settings.containerId+' .ftNotActive').removeClass('ftNotActive');
			settings.running = true;
			if(settings.settingsAdjust)
				eval('indicatorSettings'+settings.settingsAdjust+' = settings;');
			else
				indicatorSettings = settings;
			settings.interval = setTimeout(function() {ftSlideShowRotate(settings);}, settings.rotateInterval);
		}
	}
}

function ftIndicatorSwitch(imageNumber, settingsAdjust) {
	if(settingsAdjust) 
		eval('var tempIndicatorSettings = indicatorSettings'+settingsAdjust+';');
	else
		var tempIndicatorSettings = indicatorSettings;

	clearInterval(tempIndicatorSettings.interval);
	$('#'+tempIndicatorSettings.containerId).attr('alt', 'stopped');
	$('#'+tempIndicatorSettings.containerId+' .ftImage').css('opacity', 1);
	tempIndicatorSettings.previousImage = tempIndicatorSettings.currentImage;
	tempIndicatorSettings.currentImage = imageNumber;
	//current indicators
	$('.'+tempIndicatorSettings.indicatorClass+tempIndicatorSettings.previousImage).animate({
		className: tempIndicatorSettings.indicator
	}, tempIndicatorSettings.fadeInInterval);
	$('.'+tempIndicatorSettings.indicatorClass+tempIndicatorSettings.currentImage).animate({
		className: tempIndicatorSettings.indicatorActive
	}, tempIndicatorSettings.fadeInInterval);
	//setting zindexs for proper fades - change maxZIndex to offset old numbers
	tempIndicatorSettings.tempMaxZIndex = tempIndicatorSettings.maxZIndex + tempIndicatorSettings.imageSrcs.length;
	$('#'+tempIndicatorSettings.containerId +' .ft'+tempIndicatorSettings.previousImage).css('z-index', tempIndicatorSettings.tempMaxZIndex);
	$('#'+tempIndicatorSettings.containerId +' .ft'+tempIndicatorSettings.currentImage).css('z-index', (tempIndicatorSettings.tempMaxZIndex - 1));
	$('#'+tempIndicatorSettings.containerId +' .activeImage').animate({
		opacity: .1
	}, 500, 'linear', function() {
		$('#'+tempIndicatorSettings.containerId +' .activeImage').removeClass('activeImage');
		$('#'+tempIndicatorSettings.containerId+' .ft'+tempIndicatorSettings.currentImage).addClass('activeImage');
		//reset all zIndexes
		var currentZIndex = 0;
		var count = 0;
		for(i = tempIndicatorSettings.currentImage; i < tempIndicatorSettings.imageSrcs.length; i++) {
			currentZIndex = tempIndicatorSettings.maxZIndex - count;
			$('#'+tempIndicatorSettings.containerId+' .ft'+i).css('z-index', currentZIndex);
			count++;
		}
		for(i = 0; i < tempIndicatorSettings.currentImage; i++) {
			currentZIndex = tempIndicatorSettings.maxZIndex - count;
			$('#'+tempIndicatorSettings.containerId+' .ft'+i).css('z-index', currentZIndex);
			count++;
		}
	});
	tempIndicatorSettings.interval = setTimeout(function() {$('#'+tempIndicatorSettings.containerId).attr('alt', 'running');ftSlideShowRotate(tempIndicatorSettings);}, tempIndicatorSettings.restartInterval);
}

function ftImageChange(change, settingsAdjust) {
	if(settingsAdjust) 
		eval('var tempIndicatorSettings = indicatorSettings'+settingsAdjust+';');
	else
		var tempIndicatorSettings = indicatorSettings;

	
	var imageNumber = 0;
	if(change == 'next') {
		imageNumber = tempIndicatorSettings.currentImage + 1;
		if(imageNumber >= tempIndicatorSettings.imageSrcs.length)
			imageNumber = 0;
	} else {
		imageNumber = tempIndicatorSettings.currentImage - 1;
		if(imageNumber < 0)
			imageNumber = tempIndicatorSettings.imageSrcs.length;
	}
	clearInterval(tempIndicatorSettings.interval);
	$('#'+tempIndicatorSettings.containerId).attr('alt', 'stopped');
	$('#'+tempIndicatorSettings.containerId+' .ftImage').css('opacity', 1);
	tempIndicatorSettings.previousImage = tempIndicatorSettings.currentImage;
	tempIndicatorSettings.currentImage = imageNumber;
	//current indicators
	$('.'+tempIndicatorSettings.indicatorClass+tempIndicatorSettings.previousImage).animate({
		className: tempIndicatorSettings.indicator
	}, tempIndicatorSettings.fadeInInterval);
	$('.'+tempIndicatorSettings.indicatorClass+tempIndicatorSettings.currentImage).animate({
		className: tempIndicatorSettings.indicatorActive
	}, tempIndicatorSettings.fadeInInterval);
	//setting zindexs for proper fades - change maxZIndex to offset old numbers
	tempIndicatorSettings.tempMaxZIndex = tempIndicatorSettings.maxZIndex + tempIndicatorSettings.imageSrcs.length;
	$('#'+tempIndicatorSettings.containerId +' .ft'+tempIndicatorSettings.previousImage).css('z-index', tempIndicatorSettings.tempMaxZIndex);
	$('#'+tempIndicatorSettings.containerId +' .ft'+tempIndicatorSettings.currentImage).css('z-index', (tempIndicatorSettings.tempMaxZIndex - 1));
	$('#'+tempIndicatorSettings.containerId +' .activeImage').animate({
		opacity: .1
	}, 500, 'linear', function() {
		$('#'+tempIndicatorSettings.containerId +' .activeImage').removeClass('activeImage');
		$('#'+tempIndicatorSettings.containerId+' .ft'+tempIndicatorSettings.currentImage).addClass('activeImage');
		//reset all zIndexes
		var currentZIndex = 0;
		var count = 0;
		for(i = tempIndicatorSettings.currentImage; i < tempIndicatorSettings.imageSrcs.length; i++) {
			currentZIndex = tempIndicatorSettings.maxZIndex - count;
			$('#'+tempIndicatorSettings.containerId+' .ft'+i).css('z-index', currentZIndex);
			count++;
		}
		for(i = 0; i < tempIndicatorSettings.currentImage; i++) {
			currentZIndex = tempIndicatorSettings.maxZIndex - count;
			$('#'+tempIndicatorSettings.containerId+' .ft'+i).css('z-index', currentZIndex);
			count++;
		}
	});
	tempIndicatorSettings.interval = setTimeout(function() {$('#'+tempIndicatorSettings.containerId).attr('alt', 'running');ftSlideShowRotate(tempIndicatorSettings);}, tempIndicatorSettings.restartInterval);
}
