// LeadSlideshow ---------------------------------------[TN]
var Slideshow = function( Config ) {
	var This = function() {
		// Public Vars -----------------------------------------[TN]
		This._Config = {
			Slides		: {},
			CurrentIndex: 0,
			ObjectVar	: 'SS',
			IntervalID	: null,
			Interval	: 10000,
			SlideClass	: 'SLD_Circle',
			UpdateNodes	: []
		};
		//------------------------------------------------------[TN]

		// Constructor -----------------------------------------[TN]
		(function() {
			This._Config = $.extend(This._Config, Config);
		})();
		//------------------------------------------------------[TN]

		// Public Functions ------------------------------------[TN]
		This.PlaySlideshow = function() {
			This._Config.IntervalID = window.setInterval( This._Config.ObjectVar + '.ChangeByInterval()' , This._Config.Interval );
		}

		This.ChangeByInterval = function() {
			var nextIndex = ( This._Config.CurrentIndex * 1 + 1 == This._Config.Slides.length) ? 0 : This._Config.CurrentIndex * 1 + 1;
			This.ShowSlide(nextIndex, true);
		}

		This.ShowSlide = function(slideIndex) {
			if (slideIndex == This._Config.CurrentIndex)
				return(false);

			$('.' + This._Config.SlideClass + ' a').each(function() {
				if ($(this).hasClass('SLD_Current'))
					$(this).removeClass('SLD_Current');

				if ($(this).attr('rel') == slideIndex)
					$(this).addClass('SLD_Current');
			});

			$('.SLD_Slideshow').fadeTo('normal', 0.1, function() {
				$('.SLD_Slide').html('<a href='+This._Config.Slides[slideIndex]['slideshow_url']+' border="0" target="_self" ><img src="images/slideshows/'+This._Config.Slides[slideIndex]['slideshow_image_filename']+'" border="0"/></a>');											   
				//$(this).find('img').attr('src', "images/slideshows/"+This._Config.Slides[slideIndex]['slideshow_image_filename']);
				This._Config.CurrentIndex = slideIndex;
				for (i=0; i<This._Config.UpdateNodes.length; i++) {
					$(this).parents('.SLD_Wrapper').find('.' + This._Config.UpdateNodes[i]).html(This._Config.Slides[slideIndex][This._Config.UpdateNodes[i]]);
				}

				$(this).fadeTo('normal', 1);
			});

			if ( arguments[1] == null ) {
				window.clearInterval(This._Config.IntervalID);
				This._Config.IntervalID = window.setInterval( This._Config.ObjectVar + '.ChangeByInterval()', This._Config.Interval );
			}
		}
		//------------------------------------------------------[TN]

		// Send Back Reference ---------------------------------[TN]
		return This;
		//------------------------------------------------------[TN]
	};
	return This();
};
//------------------------------------------------------[TN]