// JavaScript Document
/*
Author: BrianBlocker.com
*/

(function($)
{					
	$.fn.slideshow = function(options)
	{
		$.fn.slideshow.defaults = 
		{
			controller: false,
			interval: 5000,
			duration: 1000
		};
				
		var opts = $.extend({}, $.fn.slideshow.defaults, options),
			transition = true;
		
		return this.each(function()
		{
			var $this = $(this);
			opts.num = $this.children('DIV').size();
			
			function slideSwitch()
			{
				var args = arguments;
				if(transition || args[1])
				{
					var active = $this.children('DIV.active') || $this.children('DIV:first'),
						next = !args[1] ? (active.next().length == 0 ? $this.children('DIV:first') : active.next()) : $this.children('DIV:eq('+args[0]+')');
					
					active.addClass('last-active');
					next.css({opacity: 0.0}).addClass('active').animate({opacity: 1.0}, opts.duration, function()
					{
						active.removeClass('active last-active');
					});
					
					if(opts.controller)
					{
						var selected_controller = $(opts.controller).children('LI.active_ad') || $(opts.controller).children('LI:first').addClass('active_ad');
						
						if(!args[1])
							var next_controller = selected_controller.next().length == 0 ? $(opts.controller).children('LI:first') : selected_controller.next();
						else
							var next_controller =  $(opts.controller).children('LI:eq('+args[0]+')');
						
						selected_controller.removeClass('active_ad');
						next_controller.addClass('active_ad');
					}
				}
			}
			
			function createController(obj)
			{
				var controller = $('<div id="ad_controller"></div>');
				
				for(var i = 0;i < opts.num; i++)
					controller.append('<li>'+ (i+1) +'</li>');
				
				if(opts.num > 1)
				{
					obj.after(controller);
					controller.children('LI:first').addClass('active_ad');
				}
				
				return $('#ad_controller');
			}
			
			if(!opts.controller)
				opts.controller = createController($this);
			
			$(opts.controller).children('LI').click(function()
			{
				slideSwitch($(opts.controller).children('LI').index(this),true);
			}).mouseover(function()
			{
				transition = false;
			}).mouseout(function()
			{
				transition = true;
			});
			
			$this.mouseover(function()
			{
				transition = false;
				
			}).mouseout(function()
			{
				transition = true;
			});
			
			$this.children('DIV:first').addClass('active');
			
			if(opts.num > 1)
				setInterval( slideSwitch, opts.interval );
		});	
	};
})(jQuery);