﻿/*
* Version: 0.5 26/5/2011
* Copyright (c) 2011 Webtimisten (www.webtimisten.dk), Benjamin Ravn
* Requires: jQuery v1.4.4
*/

(function ($) {
	$.fn.galleryFader = function () {
		var _this = $(this);
		var _images = _this.find("ul")
		var _iImages = 0;
		var _image;
		var _timer;
		var _iSlideShowFadeTime = 2000;
		var _iClickFadeTime = 750;
		var _imageLink = _this.find(".gallery-info a");

		var addImage = function (image) {
			_images
				.append($("<li>")
					.append($("<a>")
						.attr({
							href: "/gallerier/vis/?" + image.Date + "#!" + image.ID,
							"title": image.Title
						})
						.css({
							backgroundImage: "url(" + image.Path + ")"
						})
					)
					.css({ display: "none" })
				);
		};

		var prev = function (iFadeTime) {
			var lastImage = _image;

			if (_images.find("li").index(_image) > 0)
				_image = _image.prev();
			else
				_image = _images.find("li:last");

			lastImage.fadeOut(iFadeTime);

			showImage(iFadeTime);
		};

		var next = function (iFadeTime) {
			var lastImage = _image;

			if (_images.find("li").index(_image) < _iImages)
				_image = _image.next();
			else
				_image = _images.find("li:first");

			lastImage.fadeOut(iFadeTime);

			_imageLink.fadeOut(500);

			showImage(iFadeTime);
		};

		var showImage = function (iFadeTime) {
			_image.fadeIn(iFadeTime);

			var link = _image.find("a");
			_imageLink.fadeOut(500, function () {
				_imageLink.html(link.attr("title")).fadeIn(500);
				_imageLink.attr("href", link.attr("href"));
			});

			_timer = setTimeout(function () { next(_iSlideShowFadeTime); }, 4000);
		};


		var init = function () {
			$.ajax({
				url: "/Ajax/GalleryImages.asp",
				cache: false,
				dataType: "json",
				success: function (data) {
					_data = data;

					_iImages = (_data.Images.length - 1);

					if (_iImages > -1) {
						$.each(data.Images, function (i, image) {
							addImage(image);
						});

						_image = _images.find("li:first");

						showImage(_iSlideShowFadeTime);
					}
					else
						_this.hide();
				}
			});

			_this.find(".prev").click(function () {
				clearTimeout(_timer);
				prev(_iClickFadeTime);
			});

			_this.find(".next").click(function () {
				clearTimeout(_timer);
				next(_iClickFadeTime);
			});

			_this.find(".prev, .next").hover(function () {
				$(this).stop().fadeTo(300, 1);
			}, function () {
				$(this).stop().fadeTo(300, 0.7);
			});
		};

		init();
	};
})(jQuery);
