var hndResizeTimeout;
var intThumbnailsPosition = 0;
var intThumbAnimateSpeed = 200;
var intThumbnailWidth = 232;
var intThumbnailWidthMinus = intThumbnailWidth * -1;
var intThumbnailContainerWidth;
var blnThumbnailLoading = false;
var strThumbnailClicked = "";
var hashChanging = false;
var strLanguage;
$(document).ready(function() {
	strLanguage = $("input#language").val();
	$("div.thumbnailContainer").mouseenter(function() {
		$(this).stop(false).animate({top: -45, backgroundColor: "#bac0c0"}, intThumbAnimateSpeed);
		$(this).find("div.picture").stop(false).fadeTo(intThumbAnimateSpeed, 1);
		$(this).find("div.title").stop(false).fadeTo(intThumbAnimateSpeed, 1);
	}).mouseleave(function() {
		if (strThumbnailClicked != $(this).attr("id")) {
			$(this).stop(false).animate({top: 0, backgroundColor: "#0a0b0b"}, intThumbAnimateSpeed);
			$(this).find("div.picture").stop(false).fadeTo(intThumbAnimateSpeed, 0.3);
			$(this).find("div.title").stop(false).fadeTo(intThumbAnimateSpeed, 0);
		}
	}).click(function() {
		if (!blnThumbnailLoading) {
			location.hash = $(this).attr("id");
		}
	});
	$("div#thumbnailsSort img").mouseenter(function() {
		$(this).stop(false).fadeTo(intThumbAnimateSpeed, 1);
	}).mouseleave(function() {
		if ($(this).attr("tagselected") != "true") {
			$(this).stop(false).fadeTo(intThumbAnimateSpeed, 0.3);
		}
	})
	$("div#thumbnailsSort img.tag").click(function() {
		if ($(this).attr("tagselected") != "true") {
			$(this).stop(false).attr("tagselected", "true").animate({top: 15, opacity: 1, backgroundColor: "#000000"}, intThumbAnimateSpeed);
		} else {
			$(this).stop(false).attr("tagselected", "false").animate({top: 0, opacity: 0.5, backgroundColor: "#000000"}, intThumbAnimateSpeed);
		}
		FilterTagsChanged();
	});
	$("div#thumbnailsSort div#languageChoice img").click(function() {
		var strReverseLanguage = (strLanguage == "dk" ? "uk" : "dk");
		$(this).attr("tagselected", "true");
		$.post(
			"?",
			{
				language: strReverseLanguage
			},
			function(response) {
				if (response != "ok") {
					alert("An error happened while trying to change the language:\n\n" + response);
					$(this).attr("tagselected", "false");
					$(this).mouseleave();
				} else {
					document.location.reload(true);
				}
			}
		);
	});
	$("div.thumbnailScrollLeft").click(function() {
		ThumbnailScroll("left");
	});
	$("div.thumbnailScrollRight").click(function() {
		ThumbnailScroll("right");
	});
	ProjectKeepInMiddle(true);
	$(window).resize(function() {
		clearTimeout(hndResizeTimeout);
		hndResizeTimeout = setTimeout(OnResize, 250);
	});
	$(window).hashchange(OnHashChange);
	OnHashChange();
});
function OnHashChange() {
	if (location.hash.length > 1) {
		ChangeProject(location.hash.substr(1));
	}
}
function ChangeProject(strProject) {
	var hndThumbnail = $("div.thumbnailContainer#" + strProject);
	if (hndThumbnail.length) {
		var strThumbnailClickedTemp = strThumbnailClicked;
		if (strThumbnailClickedTemp != strProject) {
			strThumbnailClicked = strProject;
			if (strThumbnailClickedTemp != "") {
				$("div.thumbnailContainer#" + strThumbnailClickedTemp).mouseleave();
			}
			hndThumbnail.mouseenter();
			strProjectTitle = $("div.thumbnailContainer#" + strProject + " div.picture img").attr("title");
			document.title = strProjectTitle;
			$("div#projectContainer div#content").fadeTo(
				intThumbAnimateSpeed, 
				0, 
				function() {
					$("div#projectContainer").animate(
						{
							height: 0, 
							top: CalculateProjectMiddle(0)
						}, 
						intThumbAnimateSpeed,
						function () {
							$.get(
								"project.php",
								{ project: strThumbnailClicked },
								function(strData) {
									$("div#projectContainer div#content").html(strData);
									$("div#projectContainer div#imageSlider").imageslider({
										arrImages: $("div#projectContainer div#projectImagesString").attr("images").split(";"),
										intImageSplits: 8, 
										intSwitchSeconds: 2,
										intFadeSpeed: 1000
									});
									var intNewWidth = 800;
									$("div#projectContainer").animate(
										{
											top: CalculateProjectMiddle(200),
											height: 200,
											width: intNewWidth,
											marginLeft: intNewWidth * -0.5
										},
										intThumbAnimateSpeed,
										function() {
											$("div#projectContainer div#content").fadeTo(
												intThumbAnimateSpeed, 
												1, 
												function() {
													blnThumbnailLoading = false;
												}
											);
										}
									);
								}
							);
						}
					);
				}
			);
		}
	}
}
function CalculateThumbnailContainerMaxWidth() {
	var intThumbnailsShown = 0;
	$.each($("div.thumbnailContainer"), function(i, e) {
		if ($(e).css("display") != "none") {
			intThumbnailsShown++;
		}
	});
	intThumbnailContainerWidth = ((232 * intThumbnailsShown) + 91) * -1;
}
function FilterTagsChanged() {
	var arrSelectedTags = new Array();
	$.each($("img.tag[tagselected=true]"), function(i, e) {
		arrSelectedTags.push($(e).attr("tag"));
	});
	if (arrSelectedTags.length == $("img.tag[tagselected=*]").length || arrSelectedTags.length == 0) {
		$("div.thumbnailContainer").css("display", "block");
	} else {
		$.each($("div.thumbnailContainer"), function(i, e) {
			var arrThumbnailTags = $(e).attr("tags").split(",");
			var blnTagFound = false;
			for (var i = 0; i < arrThumbnailTags.length; i++) {
				if ($.inArray(arrThumbnailTags[i], arrSelectedTags) > -1) {
					blnTagFound = true;
					break;
				}
			}
			$(e).css("display", (blnTagFound ? "block" : "none"));
			ThumbnailsKeepInScreen();
		});
	}
}
function ThumbnailScroll(strScrollDirection) {
	intThumbnailsPosition += (strScrollDirection == "right" ? intThumbnailWidthMinus : intThumbnailWidth);
	ThumbnailsKeepInScreen();
}
function ThumbnailsKeepInScreen() {
	CalculateThumbnailContainerMaxWidth();
	intThumbnailsPosition = Math.max(intThumbnailsPosition, intThumbnailContainerWidth + $(window).width());
	intThumbnailsPosition = Math.min(intThumbnailsPosition, 0);
	$("div#thumbnailsContainer").stop(false).animate({
			left: intThumbnailsPosition
		}, 
		500,
		function() { 
			blnScrolling = false; 
		}
	);
}
function ProjectKeepInMiddle(blnNoAnimation) {
	var intProjectMiddle = CalculateProjectMiddle($("div#projectContainer").height(), 10);
	if (blnNoAnimation == true) {
		$("div#projectContainer").css("top", intProjectMiddle);
	} else {
		$("div#projectContainer").stop(false).animate({top: intProjectMiddle}, intThumbAnimateSpeed);
	}
}
function CalculateProjectMiddle(intProjectContainerHeight, intPadding) {
	if (intPadding == undefined) intPadding = 0;
	var intReturn = Math.round(40 + (($(window).height() - 200 + intPadding)  / 2) - (intProjectContainerHeight / 2));
	return intReturn;
}
function OnResize() {
	ThumbnailsKeepInScreen();
	ProjectKeepInMiddle();
}
function Debug(strDebug) {
	$("#log").append("<div>" + new Date().getTime() + " - " + strDebug + "</div>");
}
