jQuery(document).ready(function($) {
	var canRun = $('body').is('#sets');

	if (canRun) {
		// ============ SETS ==============
		window.Sets = {

			init : function() {
				window.Sets = this;
				this.preloadImages();
				this.attachSourcesHandlers('.photo_wrapper .scroller');
				return this;

			},
			currentSet : -1,
			currentPicture : -1,

			urlTemplate : imagesHost + '/thumbnail/',
			attachSourcesHandlers : function(selector) {
				$(selector).mousemove(function(e) {
					if (!$(this).parents('.photo_container').hasClass('loading') && !$(this).parents('.photo_container').hasClass('processing')) {
						var setId = $(this).parents('.photo_container').attr("id");
						var images = imagesMap[setId];
						var setData = setsData[setId];
						var setSize = 12;
						if (setData.setSize < 12) {
							setSize = setData.setSize;
						}
						var setImageIndex = Math.floor((e.pageX - $(this).offset().left) / $(this).width() * setSize);
						if (setId == Sets.currentSet && Sets.currentPicture != setImageIndex) {
							var photoInfo = setData.photos[setImageIndex];
							$(this).children('img').remove();
							$(this).append(images[setImageIndex]);
							$(this).children('img').addClass('thumbnail');

							if (GeneralUtils.isIeBrowser) {
								var image = $(this).children('img');
								var imageHeight = image.attr('height');
								var imageTop = (240 - imageHeight) / 2;
								$(this).children('img').css('top', imageTop);
							}
							var newHref = '/set/' + setData.setOwnerUserId + '/' + setData.uploadSetId + '/' + photoInfo.imageInstanceId;
							newHref = newHref + '?ref=' + window.location.pathname;
							$('#' + setId + ' .photo_wrapper a').attr('href', newHref);

						}
						Sets.currentSet = setId;
						Sets.currentPicture = setImageIndex;
					}
				});
				$(window).resize(function() {
					GeneralUtils.setContentWidth();
				});
			},
			preloadImages : function() {
				window.imagesMap = {};
				for ( var key in setsData) {
					var set = setsData[key];
					var setArray = new Array();
					$(set.photos).each(function() {
						var photo = this;
						if (photo.imageMd5 != null) {
							var img = new Image();
							var imgHref = Sets.urlTemplate + photo.imageMd5;
							img.src = imgHref;
							setArray.push(img);
						}
					})
					imagesMap[key] = setArray;
					setArray['loaded'] = false;
					Sets.checkIfImagedAreAlreadyDownloaded(key);
				}

			},
			checkIfImagedAreAlreadyDownloaded : function(key) {
				if (imagesMap[key]['loaded'] == false) {
					setTimeout('Sets.checkImages(' + key + ')', 1000);
				}
			},
			checkImages : function(key) {

				var setArray = imagesMap[key];
				var completed = true;

				for ( var i = 0; i < imagesMap[key].length; i++) {
					var image = imagesMap[key][i];
					if ($(image).attr('complete') == false) {
						completed = false;
						break;
					}
				}
				imagesMap[key]['loaded'] = completed;
				if (completed) {
					$('#' + key + ' strong').css('visibility', 'visible');
					$('#' + key).removeClass('loading');
				} else {
					Sets.checkIfImagedAreAlreadyDownloaded(key);
				}
			}

		}.init();
	}
});
