<!--
	(function ($) {
		$.fn.MGCarousel = function (options) {
			return this.each(function () {

				var self = this;

				var settings = {
					banner_list					: $(this).children(),
					rotationResumeMilli : 6000,
					animationSpeed			: 500,
					rotationTimeMilli		: 3000,
					selectedIdx					: 0,
					rotate							: true,
					zIndex							: $(this).css('z-index') == parseInt($(this).css('z-index'), 10) ? parseInt($(this).css('z-index')) : 0
				};

				// If options exist, merge them with default settings
				if ( options )
					$.extend( settings, options );

				// make the container relative incase it already isn't
				$(this).css({ position : 'relative' });

				// make the banners absolute incase they already aren't
				// hide all but the default, set it to current
				settings.banner_list.each(function (i) {
					$(this).addClass('banner-item').css({ position : 'absolute', top : 0, left : 0 });
					if (i != settings.selectedIdx)
						$(this).css({ opacity : 0, zIndex : settings.zIndex }).removeClass('current');
					else
						$(this).css({ opacity : 1, 'z-index' : settings.zIndex + 2 }).addClass('current');
				});

				// make the nav buttons container
				var $nav_items = $('<ul/>', {
				}).css({
					position : 'absolute',
					bottom : 0,
					right : 0,
					zIndex : settings.zIndex + settings.banner_list.size() + 1
				});

				// make the list of nav buttons
				for(var i=0;i<settings.banner_list.size();i++) {
					var $nav_container = $('<li/>', {}).css({
						float		: 'left',
						display	: 'block',
						cursor	: 'pointer'
					});

					$nav_container.addClass('banner-nav-item')
					.addClass((i == settings.selectedIdx) ? 'current' : '')
					.data('target_banner', settings.banner_list[i])
					.bind('click', { $nav_container : $nav_container }, function(e) {

						if (e.pageX != undefined)
							stop_rotation(self);

						e.data.$nav_container.siblings().removeClass('current');
						e.data.$nav_container.addClass('current');

						var current_banner = $('.current', self)[0];
						var target_banner = $(this).data('target_banner');
						$('li', self).each(function() { $(this).clearQueue('fx'); });

						if (current_banner != target_banner) {
							$('.banner-item', self).removeClass('current');
							$(current_banner).css('z-index', settings.zIndex + 1);
							$(target_banner).css('z-index', settings.zIndex + 2).animate({ opacity : 1 }, settings.animationSpeed, function() { $(current_banner).css({ zIndex : settings.zIndex, opacity : 0 }) } ).addClass('current');
						} else {
							$(target_banner).css('z-index', settings.zIndex + 2).animate({ opacity : 1 }, settings.animationSpeed).addClass('current');
							$(target_banner).siblings().css('z-index', settings.zIndex);
						}

						if (e.pageX != undefined)
							start_rotation({ settings : settings, self : self, nav_items : $nav_items, speedOverride : settings.rotationResumeMilli });

					}).appendTo($nav_items);

					var $nav_item = $('<a/>', { text : i + 1 })
					.css({ width		: '100%', height	: '100%', display	: 'block' })
					.addClass((i == 0) ? 'first' : '')
					.addClass((i == settings.banner_list.size() - 1) ? 'last' : '')
					.appendTo($nav_container);
				}

				$('<li/>', { }).addClass('banner-nav').css({ display : 'block' }).append($nav_items).appendTo(this);

				start_rotation({ settings : settings, self : self, nav_items : $nav_items });

			});

			function start_rotation(args) {
				var settings = args.settings;
				var theCarousel = args.self;
				var $nav_items = args.nav_items;
				var tmpSpeed = args.speedOverride | 0;

				if (!settings.rotate)
					return;

				// clear any currently running loop
				stop_rotation(theCarousel);

				// set pause timeout before looping again
				$(theCarousel).data('pause_timeout_id', setTimeout(function() {

					$(theCarousel).data('rotate_timeout_id', setInterval(function() {
						var nextSelected = $nav_items.find('.current').next();
						if (nextSelected.size() < 1)
							nextSelected = $nav_items.find('.current').parent().children().first();
						nextSelected.trigger('click');
					}, settings.rotationTimeMilli));

				}, tmpSpeed));

			}

			function stop_rotation(theCarousel) {
				clearInterval($(theCarousel).data('pause_timeout_id'));
				clearInterval($(theCarousel).data('rotate_timeout_id'));
			}

		};
	})(jQuery);
//-->

