/*!
* flickrator.js
* ===========================================
* Copyright (c) 2010 Bauer Consumer Media Ltd
* -------------------------------------------
*/

var Flickrator = {
	currentIndex: 0,

	disableButton: function (button) {
		$(button).removeAttr('href');
		if ($(button).find('img').attr('src') == null) {
			var source = 'none';
		}
		else {
			var source = $(button).find('img').attr('src');
		}
		if (source.indexOf('_disabled') == -1) {
			source = source.replace(/(\.[^.]+)$/, '_disabled$1');
			$(button).find('img').attr('src', source);
		}
	},

	enableButton: function (button) {
		$(button).attr('href', '#');
		var source = $(button).find('img').attr('src');
		source = source.replace(/_disabled(\.[^.]+)$/, '$1');
		$(button).find('img').attr('src', source);
	},

	hideAllListItems: function () {
		$('.flickrator div.thumbnails ul.thumbImageList li').each(function () {
			$(this).hide();
		});
	},

	load: function () {
		$('.flickrator div.thumbnails ul.thumbImageList li').show().parent().children('li:gt(2)').hide();

		Flickrator.disableButton($('.flickrator a.previousImage'));
		if ($('.flickrator div.thumbnails ul.thumbImageList li').length < 4)
			Flickrator.disableButton($('.flickrator a.nextImage'));

		$('.flickrator a.previousImage').click(function (e) {
			Flickrator.showPreviousImage();
			e.preventDefault();
		});

		$('.flickrator a.nextImage').click(function (e) {
			Flickrator.showNextImage();
			e.preventDefault();
		});

		$('.flickrator a.clickToEnlarge').click(function (e) {
			Flickrator.popup(this);
			e.preventDefault();
		});

		$('.flickrator .mainImage a').click(function (e) {
			Flickrator.popup(this);
			e.preventDefault();
		}).first().addClass('selected').show();

		$('.flickrator ul.thumbImageList li a').click(function (e) {
			var lnk = $(this);
			var li = lnk.parent();
			var index = li.index() + 1;
			$('.flickrator ul.thumbImageList li a').removeClass('selected');
			lnk.addClass('selected');

			if (index > 1)
				Flickrator.enableButton($('.flickrator a.previousImage'));
			else
				Flickrator.disableButton($('.flickrator a.previousImage'));

			if (index < $('.flickrator div.thumbnails ul.thumbImageList li').length)
				Flickrator.enableButton($('.flickrator a.nextImage'));
			else
				Flickrator.disableButton($('.flickrator a.nextImage'));

			$('.flickrator .mainImage a:visible').removeClass('selected').hide();
			$('.flickrator .mainImage a:nth-child(' + index + ')').addClass('selected').fadeIn('slow');
			$('.flickrator div.imageNumbers').find('span').html(index);
			e.preventDefault();
		}).first().addClass('selected');
	},

	popup: function (button) {
		var newWin = window.open(button.href, 'flikpop', 'location=0,status=0,scrollbars=1,width=800,height=600');
		newWin.focus();
		return false;
	},

	showListItems: function () {
		if (Flickrator.currentIndex == $('.flickrator div.thumbnails ul.thumbImageList li').length - 2) {
			Flickrator.currentIndex = Flickrator.currentIndex - 1;
		} else if (Flickrator.currentIndex < 0) {
			Flickrator.currentIndex = 0;
		}

		$('.flickrator div.thumbnails ul.thumbImageList li').each(function (i) {
			if (i >= Flickrator.currentIndex && i <= Flickrator.currentIndex + 2)
				$(this).show();
		});

		// if the currentIndex gets up to the amount of photos in the list then disable the next
		// button as there are no further images to view.		
		if ((Flickrator.currentIndex + 3) == $('.flickrator div.thumbnails ul.thumbImageList li').length) {
			Flickrator.disableButton($('.flickrator a.nextImage'));
		}
		else {
			Flickrator.enableButton($('.flickrator a.nextImage'));
		}

		// if the current indexIndex is less than 1 then there are no previous images to view so
		// disable the button.
		if ((Flickrator.currentIndex) < 1) {
			Flickrator.disableButton($('.flickrator a.previousImage'));
		}
		else {
			Flickrator.enableButton($('.flickrator a.previousImage'));
		}
	},

	showNextImage: function () {
		var lnk = $('.flickrator ul.thumbImageList li a.selected');
		if ($('.flickrator ul.thumbImageList li:visible').index(lnk.parent()) < 2)
			lnk.parent().next().children('a').trigger('click');
		else if ($('.flickrator div.thumbnails ul.thumbImageList li').length > Flickrator.currentIndex + 2) {
			Flickrator.currentIndex++;
			Flickrator.hideAllListItems();
			Flickrator.showListItems();
			lnk.parent().next().children('a').trigger('click');
		}
	},

	showPreviousImage: function () {
		var lnk = $('.flickrator ul.thumbImageList li a.selected');
		if ($('.flickrator ul.thumbImageList li:visible').index(lnk.parent()) > 0)
			lnk.parent().prev().children('a').trigger('click');
		else if (Flickrator.currentIndex > 0) {
			Flickrator.currentIndex--;
			Flickrator.hideAllListItems();
			Flickrator.showListItems();
			lnk.parent().prev().children('a').trigger('click');
		}
	}
}

$(document).ready(function () {
	Flickrator.load()
});
