(function($) {
	$.fn.extend({
		slides: function(delay){
			//setup variables
			var root = $(this);
			var interval = null;

			//private functions
			function fade(id){
				var next = null;
				var out = root.find('.slides .current');

				if (id > 0) {
					next = root.find('#slide_'+id);
				}
				else {
					next = out.next();
					if (next.length < 1) {
						next = root.find('.slides').children().eq(0);
					}
				}
				out.fadeOut(500).queue(function(){
					next.addClass('current');
					out.removeClass('current');
					next.fadeIn(500);
					$(this).dequeue();
				})

				id = next.attr('id').replace('slide_', '');
				var ctrl = root.find('.slide_control');
				ctrl.find('a').removeClass('current');
				ctrl.find('#ctrl_'+id).addClass('current');
			}

			function showStart(delay){
				if (delay > 0) {
					interval = setInterval(function(){
						fade(0);
					}, delay);
				}
			}

			function showStop(){
				clearInterval(interval);
			}

			function initialize()
			{
				root.find('.slide_control a').bind('click', function(e){ //bind clicks
					e.preventDefault();
					var id = $(e.currentTarget).attr('id').replace('ctrl_', '');
					showStop();
					fade(id);
					showStart(delay);
				});
				
				showStart(delay);
			}
			
			initialize();
		}
	});
})(jQuery);

