function carouselCallback(carousel) {

    $('#main_next').bind('click', function() {

		if (!$('#animate_status').hasClass('animating')) {
			var changed = false;
			$('#thumbs li img').each(function(i) {
				if ($(this).hasClass('selected') && !changed) {
					if (i != $('#thumbs li img').length) {
						$(this).removeClass('selected');
						$('#thumbs li img').each(function(j) {
							if (j == (i+1)) {
								$(this).trigger('click').addClass('selected');
								changed = true;
							}
						});
					}
				}
			});
	
	        carousel.options.scroll = 1;
			carousel.next();
			carousel.options.scroll = 3;
		}
		return false;
    });

    $('#main_prev').bind('click', function() {
	
		if (!$('#animate_status').hasClass('animating')) {
			var changed = false;
			$('#thumbs li img').each(function(i) {
				if ($(this).hasClass('selected') && !changed) {
					if (i > 0) {
						$(this).removeClass('selected');
						$('#thumbs li img').each(function(j) {
							if (j == (i-1)) {
								$(this).trigger('click').addClass('selected');
								changed = true;
							}
						});
					}
				}
			});
	
	        carousel.options.scroll = 1;
			carousel.prev();
			carousel.options.scroll = 3;
		}
		return false;
    });
};

function adjustNav()
{
	if ($('.photo_main').width()) {
		var width = $('.photo_main').width();
	} else {
		var width = $('.photo_main').css('width');
	}
	
	width = parseInt(width);
	if (width < 500) {
		$('#main_nav,#photo_description').css('width',width+'px');
	} else {
		$('#main_nav,#photo_description').css('width','500px');
	}
}


$(document).ready(function() {
	
	adjustNav();
	
	// Load jCarousel //
    $('#thumbs').jcarousel({
    	animation: 'slow',
		initCallback: carouselCallback
    });

	$('#thumbs').css('visibility','visible');
	

	// IE6 Hack - For some reason adding a class fixes padding problems //
	$('#thumbs li img').addClass('thumb').css('cursor','pointer');
	
	// Insert blank div with id of animate_status - assign class of animating when animating //
	$('body').append('<div id="animate_status">animate status</div>');
	$('#animate_status').hide();


	var animating = false;
	  
    $('#thumbs li img').click(function() {

		var selected = $(this).attr('class').match('selected');
		if ((selected == 'selected') || (animating == true)) {
			return false;
		}
		
		animating = true;
		$('#animate_status').addClass('animating');

    	var thumbSrc = $(this).attr('src');
		var thumbSrcLen = thumbSrc.length - 6;
		var src = thumbSrc.substr(0,thumbSrcLen) + '.jpg';
		
		var photoTitle = $(this).attr('alt');
		var photoNumber = $(this).attr('class').substr(5,2);
		var photoDescription = $(this).attr('longdesc');
		
		$('#thumbs li img.selected').removeClass('selected');
		$(this).addClass('selected');
    	
    	// fade out old image //
		$('.photoset_description').fadeOut('slow');
    	$('.photo_title').animate({opacity: 0},'slow');
		$('.photo_numbers').animate({opacity: 0},'slow');
		$('#photo_description').animate({opacity: 0},'slow', function() { $(this).remove(); });
		$('#main_nav').animate({opacity: 0},'slow');
    	$('.photo_main').fadeOut('slow',function() {
    		$('.photo_main').remove();


			if (photoNumber == 1) {
				$('#main_prev').hide();
			} else {
				$('#main_prev').show();
			}
			
			if (photoNumber == $('#thumbs li img').length) {
				$('#main_next').hide();
			} else {
				$('#main_next').show();
			}


			$('#photo').append('<img src="/_images/loading.gif" alt="loading" class="loading" />');
			$('.loading').hide().fadeIn('fast');
    		
			$('#main_nav').before('<img src="' + src + '" class="photo_main" />');
			$('.photo_main').hide().load(function() {
				$('.loading').fadeOut('fast',function() {
					$(this).remove();
					adjustNav();
					$('.photo_title').text(photoTitle);
		    		$('.photo_number').text(photoNumber);
		    		$('.photo_title').animate({opacity: 1},'slow');
					$('.photo_numbers').animate({opacity: 1},'slow');	
					if (photoDescription != undefined) {
						$('.photo_main').after('<div id="photo_description">' + photoDescription + '</div>');
						$('#photo_description').css('opacity',0);
						$('#photo_description').animate({opacity: 1},'slow');
					}
					$('#main_nav').animate({opacity: 1},'slow',function() {
						$(this).css('height','20px');
						adjustNav();
					});
		    		$('.photo_main').fadeIn('slow',function() {
						animating = false;
						$('#animate_status').removeClass('animating');
						if (photoNumber == 1) {
							$('.photoset_description').fadeIn('slow');
						}
					});
				});
			});
    	});
    });    
});
