
	var mediaViewer = new Array();

	$j(document).ready(function() {
		if ($j('ul.thumbnails li').length > 0) {
			mediaViewer.original	= $j('ul.thumbnails li');
			mediaViewer.generated	= new Array();
			mediaViewer.active		= 0;
			mediaViewer.viewportY	= ($j('div.thumbnailMask').css('height').replace('px', '') * 1) - 2;
			mediaViewer.loaded		= false;
			mediaViewer.current		= 1;
			mediaViewer.timeoutId	= null;
			mediaViewer.play		= false;
			mediaViewer.slideShowSpeed = 4000;

			updateCounter();
			generateList();

			$j('a#controlPlay').bind('click', playSlideshow);
			$j('a#controlNext').bind('click', playNext);
			$j('a#controlPrev').bind('click', playPrev);
			$j('a.scrollUp').bind('click', clickUp);
			$j('a.scrollDown').bind('click', clickDown);
		}
	});

	function playSlideshow()
	{
		playNext();

		$j('a#controlPlay').unbind('click').text('Stop slideshow').bind('click', stopSlideshow);

		mediaViewer.timeoutId = setInterval('playNextInterval()', mediaViewer.slideShowSpeed);

		return false;
	}

	function stopSlideshow()
	{
		$j('a#controlPlay').unbind('click').text('Play slideshow').bind('click', playSlideshow);

		clearInterval(mediaViewer.timeoutId);

		return false;
	}

	function playNextInterval()
	{
		mediaViewer.current = mediaViewer.current++;

		if (mediaViewer.current >= mediaViewer.original.length) {
			mediaViewer.current = 0;
		}

		var NextPhoto = mediaViewer.original[mediaViewer.current];

		loadPhoto(NextPhoto);
	}

	function playNext()
	{
		stopSlideshow();

		mediaViewer.current = mediaViewer.current++;

		if (mediaViewer.current >= mediaViewer.original.length) {
			mediaViewer.current = 0;
		}

		var NextPhoto = mediaViewer.original[mediaViewer.current];

		loadPhoto(NextPhoto);

		return false;
	}

	function playPrev()
	{
		stopSlideshow();

		mediaViewer.current = (mediaViewer.current * 1) - 2;

		if (mediaViewer.current < 0) {
			mediaViewer.current = mediaViewer.original.length - 1;
		}

		var PreviousPhoto = mediaViewer.original[mediaViewer.current];

		loadPhoto(PreviousPhoto);

		return false;
	}

	function loadPhoto(newPhoto)
	{
		updateMainPhoto($j(newPhoto).children('a.largeLink').attr('href'), $j(newPhoto).children('span').text(), $j(newPhoto).children('a.contentLink').attr('href'));
	}

	function detectCurrentPhoto()
	{
		var PhotoSrc = $j('div#mediaViewer dl.current dt img').attr('src');

		for (var x = 0; x < mediaViewer.original.length; ++x) {
			if ($j(mediaViewer.original[x]).children('a.largeLink').attr('href') === PhotoSrc) {
				mediaViewer.current = ++x;
			}
		}

		updateCounter();
	}

	function updateCounter()
	{
		$j('span#mediaCounter').text(mediaViewer.current + ' of ' + mediaViewer.original.length.toString());
	}

	function generateList()
	{
		var i = 0;

		mediaViewer.generated = new Array();

		if (!mediaViewer.loaded) {
			var pos = (mediaViewer.active - 3);

			mediaViewer.loaded = true;
		} else {
			var pos = (mediaViewer.active - 6);
		}

		if (pos.toString().substr(0, 1) == '-') {
			pos += mediaViewer.original.length;
		}

		while (i < 9) {
			var tmpItems = mediaViewer.original.slice(pos).slice(0, (9 - mediaViewer.generated.length));

			for (var x = 0, c = tmpItems.length; x < c; x++) {
				mediaViewer.generated[i] = tmpItems[x];
				pos++; i++;
			}

			if (pos >= mediaViewer.original.length) {
				pos = 0;
			}
		}

		$j('div#mediaViewer ul.thumbnails').children('li').remove();

		for (x = 0, c = mediaViewer.generated.length; x < c; x++) {
			$j('ul.thumbnails').append($j(mediaViewer.generated[x]).clone());
		}
		$j('div#mediaViewer ul.thumbnails').css('margin-top', '-' + mediaViewer.viewportY + 'px');

		mediaViewer.active = --pos;

		monitorThumbs();
	}

	function monitorThumbs()
	{
		$j('div#mediaViewer ul.thumbnails li a.largeLink').click(function() {
			var element = $j(this).parent('li');

			stopSlideshow();
			loadPhoto(element);

			return false;
		});
	}

	function updateMainPhoto(large, description, link)
	{
		var newPhoto = $j('div#mediaViewer dl.current dt img').clone();

		$j(newPhoto).css('opacity', 1);

		$j('div#mediaViewer dl.current dt img').addClass('oldPhoto');

		$j(newPhoto).addClass('newPhoto').attr('src', large);

		$j('div#mediaViewer dl.current dt').height($j('div#mediaViewer dl.current dt img').height() + 3);

		$j('div#mediaViewer dl.current dt').append(newPhoto);

		$j('div#mediaViewer dl.current dt img.newPhoto').hide();

		$j('div#mediaViewer dl.current dd.description span').fadeOut(500, function() {
			$j(this).text(description);
			$j(this).parent().children('a').attr('href', link);
		});

		$j('div#mediaViewer dl.current dt img.oldPhoto').fadeOut(1000, function() {
			$j(this).remove();
		});

		$j('div#mediaViewer dl.current dd.description span').fadeIn(500);

		$j('div#mediaViewer dl.current dt img.newPhoto').fadeIn(1000, function() {
			$j(this).removeClass('newPhoto');
			detectCurrentPhoto();
		});

		return false;
	}

	function clickUp()
	{
		mediaViewer.active = mediaViewer.active - 5;

		$j('ul.thumbnails').animate({marginTop: 0}, 'slow', generateList);

		return false;
	}

	function clickDown()
	{
		var newMargin = '-' + (mediaViewer.viewportY * 2) + 'px';
		mediaViewer.active = mediaViewer.active + 1;

		$j('ul.thumbnails').animate({marginTop: newMargin}, 'slow', generateList);

		return false;
	}