/* @author john@line.uk.com */
(function ($) {
	$(function () {
		var gallery = $('.gallery');
		if (gallery.size() > 0) {
			var thePhoto = gallery.find('#the_photo');
			var nextPhoto = gallery.find('#photo_next');
			var prevPhoto = gallery.find('#photo_prev');

			var thumbnails = gallery.find('#gallery_thumbs');
			var nextThumb = gallery.find('#thumb_next');
			var prevThumb = gallery.find('#thumb_prev');

			var amountBars = gallery.find('.amt_bar');

			thePhoto.hide();

			function timekeyForThumb(thumb) {
				var classes = thumb.attr('class').split(' ');
				for (var i = 0, ii = classes.length; i < ii; i++) {
					if (classes[i].indexOf('timekey') != -1) {
						return classes[i];
					}
				}
				return null;
			}

			function changePhoto(thumbId) {
				if (thumbId != '') {
					var thumb = $('#' + thumbId, thumbnails);

					thePhoto.fadeOut(function () {
						var im = new Image();
						$(im).load(function () {
							thePhoto.fadeIn();
							thePhoto.attr('src', thumb.children('a').attr('href'));
						});
						im.src = thumb.children('a').attr('href');
					});


					// Apply .on class to thumbnails
					thumbnails.find('.on').removeClass('on');
					thumb.addClass('on');

					// Add .on class to bars
					amountBars.removeClass('on');
					amountBars.filter('#' + timekeyForThumb(thumb)).addClass('on');

					// Update the next & prev buttons
					nextThumb.attr('href', '#' + thumb.next().attr('id'));
					prevThumb.attr('href', '#' + thumb.prev().attr('id'));

					nextPhoto.attr('href', '#' + thumb.next().attr('id'));
					prevPhoto.attr('href', '#' + thumb.prev().attr('id'));

					// Update the position of the thumbnails
					thumbnails.animate({left: -1 * thumb.position().left});
				}

				return false;
			}

			// Thumbnail clicks
			thumbnails.find('a').click(function () {
				return changePhoto($(this).parent().attr('id'));
			});

			// Previous and next clicks
			function navigationElement() {
				$($(this).attr('href')).children('a').click();
				return false;
			}

			nextThumb.click(navigationElement);
			prevThumb.click(navigationElement);
			nextPhoto.click(navigationElement);
			prevPhoto.click(navigationElement);
			$('.photo_link').click(navigationElement);

			// Amount bar clicks
			amountBars.click(function () {
				thumbnails.children('.' + $(this).attr('id')).eq(0).children('a').click();
				return false;
			});

			thumbnails.children(':first-child').children('a').click();
		}
	});
})(jQuery);
