jQuery.extend({

	lightbox: {
		init: function() {
			this.onhide = function(){};
			this.shadow = $('<div class="lb-shadow"></div>').appendTo(document.body);
			//this.clock = $('<div class="lb-loading"></div>').appendTo(document.body);
			this.wrapper = $('<div class="lb-1"></div>').appendTo(document.body);
			this.container = $('<div class="lb-3"></div>').appendTo(
				$('<div class="lb-2"></div>').appendTo(
					this.wrapper
				)
			);

			var kp = function(e) {
				if (e.keyCode == (e.DOM_VK_ESCAPE || 27)) {
					$.lightbox.hide();
				}
			};

			this.show = function() {
				$(document.body).addClass('lb-visible');
				$(document).keyup(kp);

				var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
				if (IE6) {
					var vScrollTop = $(document.body).scrollTop() + 'px';
					$.lightbox.wrapper.css('margin-top', vScrollTop);
					$.lightbox.shadow.css('top', vScrollTop);
				}

				return this;
			};
			this.hide = function() {
				$(document.body).removeClass('lb-visible');
				$(document).unbind('keyup', kp);
				$.lightbox.onhide();
				return this;
			};
			this.setClass = function(className) {
				this.container.get(0).className = 'lb-3 ' + className;
				return this;
			};
			this.loading = function() {
				$.lightbox.wrapper.addClass('lb-loading');
			};
			this.loaded = function() {
				$.lightbox.wrapper.removeClass('lb-loading');
			};

			this.wrapper.click(this.hide);
		}
	}

});

$(document).ready(function() { $.lightbox.init(); });


jQuery.fn.extend({
	thumbnail: function() {
		/*$.lightbox.onhide = function(event) {
			$.lightbox.container.find('img').remove();
			$(document).unbind('keyup', prevNext);
			activeGallery = false;
		};*/

		var activeGallery = false;
		var i = new Image();
		i.onload = function() {
			var json = $('#product-image').data('json');

			$.lightbox.loaded();
			$.lightbox.setClass('lb-image');

			var imgWrapper = ($('.lb-image-wrapper').length > 0) ? $.lightbox.container.find('.lb-image-wrapper') : $.lightbox.container;

			$('<img src="' + this.src + '" alt="" style="display: none;" \/>').appendTo(imgWrapper.empty());

			if (json.status == 'ok') {
				var iIndex, iTitle, iPrev, iNext;
				var iWidth = this.width + 40;
				var iHeight = this.height;
				var gCount = json.data.length;

				for (var j = 0; j < gCount; j++) {
					if (this.src == json.data[j].url) {
						iIndex = j+1;
						iTitle = json.data[j].title;
						iPrev = (j != 0) ? json.data[j-1].url : false;
						iNext = (j+1 != gCount) ? json.data[j+1].url : false;
					}
				}

				if (imgWrapper == $.lightbox.container) { $.lightbox.container.find('img').wrap('<div class="lb-image-wrapper"><\/div>'); }

				$.lightbox.container.find('.lb-image-wrapper').animate({ height: iHeight + 'px' }, 'fast');
				$.lightbox.container.animate({ width: iWidth + 'px'}, 'fast', function() {

				$.lightbox.container.find('img').fadeIn('medium');

				if (imgWrapper != $.lightbox.container) { $.lightbox.container.find('.lb-info').remove(); }

				$.lightbox.container.prepend('<div class="lb-info"><strong>' + iTitle + '<\/strong> (<span>' + iIndex + '/' + gCount + '<\/span>)<\/div>')

				$('<a href="#" class="close">&times;<\/a>').
					prependTo($.lightbox.container.find('.lb-info')).
					click(function(event) { $.lightbox.hide(); event.preventDefault(); });

				if (iPrev) {
					$.lightbox.container.find('.lb-image-wrapper').append('<a href="' + iPrev + '" class="arrow lb-prev">&nbsp;<\/a>');
					$.lightbox.container.find('.lb-info span').prepend('<a href="' + iPrev + '" class="lb-prev">&laquo; predcházajúce<\/a> ');
					$.lightbox.container.find('.lb-prev').click(function(event) { loadImage(iPrev); event.preventDefault(); });
				}

				if (iNext) {
					$.lightbox.container.find('.lb-image-wrapper').append('<a href="' + iNext + '" class="arrow lb-next">&nbsp;<\/a>');
					$.lightbox.container.find('.lb-info span').append(' <a href="' + iNext + '" class="lb-next">ďalšie &raquo;<\/a>');
					$.lightbox.container.find('.lb-next').click(function(event) { loadImage(iNext); event.preventDefault(); });
					$.lightbox.container.find('.arrow.lb-next').hover(
						function() { $(this).css('background-position', (iWidth/2)-60 + 'px 50%'); },
						function() { $(this).css('background-position', '0 200%'); });
				}
				});
			}

			$.lightbox.container.click(function(event) {
				event.stopPropagation();
				event.preventDefault();
			});
		};

		var loadImage = function(iUrl) {
			$.lightbox.show();

			var iImg = $.lightbox.container.find('img');
			if (iImg.length > 0) {
				iImg.fadeOut('fast', function() {			
					$.lightbox.loading();
					i.src = iUrl;
				});
			}
			else {
				$.lightbox.loading();
				i.src = iUrl;
			}
		};

		var prevNext = function(event) {
			switch (event.keyCode) {
				case 37 : {
					var iUrl = $.lightbox.container.find('.lb-image-wrapper .lb-prev').attr('href') || false;
					if (iUrl) loadImage(iUrl);
					event.preventDefault();
				}
				break;
				case 39 : {
					var iUrl = $.lightbox.container.find('.lb-image-wrapper .lb-next').attr('href') || false;
					if (iUrl) loadImage(iUrl);
					event.preventDefault();
				}
				break;
			}
		};

		return this.click(function(event) {
			$.lightbox.onhide = function(event) {
				$.lightbox.container.empty();
				$.lightbox.container.css('width', '');
				$(document).unbind('keyup', prevNext);
				activeGallery = false;
			};

			if (!activeGallery) {
				activeGallery = true;

				var vGallery = $(this).parents('#product-image');
				var aUrl = vGallery.find('input.gallery-json').val();
				var iUrl = this.href;
	
				if (!vGallery.data('json')) {
					$.ajax({
						type: 'GET',
						dataType: 'json',
						url: aUrl,
						/*beforeSend: function() {
						},*/
						error: function() {
							loadImage(iUrl);
						},
						/*complete: function() {
						},*/
						success: function(json) {
							vGallery.data('json', json);
	
							loadImage(iUrl);
							$(document).bind('keyup', prevNext);
						}
					});
				}
				else {
					loadImage(iUrl);
					$(document).bind('keyup', prevNext);
				}
			}

			event.preventDefault();
		});
	}
});

$(document).ready(function() {
	$('.lb-ilink').thumbnail();
});