if (typeof jQuery !== 'undefined') {
	(function ($) {
		$.fn.extend({
			slideShow: function (options) {
				var settings = $.extend({}, $.fn.slideShow.defaults, options),
					i = 0;
			
				return this.each(
					function () {
						var $$, $div, $images, $arrows, $pager,
							id, selector, path, o, options,
							height, width,
							list = [], li = 0,
							parts = [], pi = 0,
							arrows = ['Previous', 'Next'];
						
						$$			= $(this);
						o			= $.metadata ? $.extend({}, settings, $$.metadata()) : settings;
						id			= 'slideshow-' + (i++ + 1);
						$div		= $('<div />').addClass('slideshow').attr('id', id);
						selector	= '#' + id + ' ';
						path		= $$.attr('src').replace(/[0-9]\.jpg/g, '');
						options		= {};
						height		= $$.height();
						width		= $$.width();
						
						// build the images
						if (o.images.length > 0 && typeof o.images === 'object') {
							$.each(o.images, function () {
								list[li++] = '<li>';
								list[li++] = '<img src="' + path + this + '" alt="" title="" height="' + height + '" width="' + width + '">';
								list[li++] = '</li>';
							});
							$images = $('<ul />').addClass('cycle-images');
							$images.append(list.join('')).appendTo($div);
		
							// different effect
							if ($$.is('.slide')) {
								options.fx = 'scrollHorz';
							}
		
							// don't move by default
							if ($$.is('.stopped')) {
								options.timeout = 0;
							}
							
							// based on the class name on the image
							if ($$.is('[class*=start-]')) {
								options.startingSlide = parseInt($$.attr('class').replace(/.*start-([0-9]+).*/g, "$1"), 10) - 1;
							}
							
							// create the arrows
							if ($$.is('.arrows') && list.length > 1) {
								options.next = selector + '.next';
								options.prev = selector + '.previous';
								
								$arrows = $('<ul />').addClass('cycle-arrows');
								
								$.each(arrows, function (i, val) {
									parts[pi++] = '<li class="' + val.toLowerCase() + '">';
									parts[pi++] = '<a href="#' + val.toLowerCase() + '">';
									parts[pi++] = '<span>' + val + '</span>';
									parts[pi++] = '</a>';
									parts[pi++] = '</li>';
								});
								
								$arrows.append(parts.join('')).appendTo($div);
								$div.addClass('has-cycle-arrows');
							}
								
							// create the clickable pagination
							if ($$.is('.pagination') && list.length > 1) {
								options.pager = selector + '.cycle-pagination';
								
								$pager = $('<ul />').addClass('cycle-pagination');
								$pager.appendTo($div);
								$div.addClass('has-cycle-pagination');
								
								if ($$.is('.arrows') && list.length > 1) {
									$div.addClass('has-cycle-arrows-and-pagination');
								}
							}
							
							$$.replaceWith($div);
							$images.cycle($.extend({}, o, options));
						}
					}
				);
			}
		});
		
		// defaults
		$.fn.slideShow.defaults = {
			images:			null,
			fx:				'fade',
			timeout:		4000,
			speed:			1250,
			prevNextClick:	function (isNext, zeroBasedSlideIndex, slideElement) {
				$(this.next).add(this.prev).children('a').blur();
			},
			pagerClick:		function (zeroBasedSlideIndex, slideElement) {
				$(this.pager).children('a').blur();
			}
		};
	})(jQuery);
}