var imagesLoaded = 0;
var fadeInProgress = false;
var thumbOpacities = [];
var thumbAction = [];
var imageDescriptionPresent;
var imageWidthChanged = false;
var wentForward;
var impressumHidden = true;

function newImage (arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

function changeImages () {
	if (document.images ) {
		for (var i=0; i<changeImages.arguments.length; i+=2) {
			document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
		}
	}
}

function iterateThroughImages (direction) {
	wentForward = direction > 0;

	var newImageId = getRealNewImageId ( currentImage + direction );
	while (typeof images[newImageId] == "undefined") {
		newImageId = getRealNewImageId ( newImageId + direction );
	}
	
	showImage ( newImageId );
}

function getRealNewImageId (newImageId) {
	if (newImageId > lastImageId) {
		return firstImageId;
	}
	if (newImageId < firstImageId) {
		return lastImageId;
	}
	return newImageId;
}

function showImage (newImage) {
	if (((currentImage != newImage && newImage <= imagesLoaded) || initialFade) && !fadeInProgress) {
		fadeInProgress = true;

		if (highlightThumbs) {
			highlightNav(currentImage, -1, "thumbs", true);
			highlightNav(newImage, 1, "thumbs", true);
			document.getElementById("nav" + currentImage).style.cursor = "pointer";
			document.getElementById("nav" + newImage).style.cursor = "default";			
		}

		imgNew = document.getElementById("img1");
		imgOld = document.getElementById("img2");

		setOpacity(imgOld, 100);
		setOpacity(imgNew, 0);

		if (!initialFade) {
			imgOld.src = images[currentImage];
		} else {
			imgOld.src = "images/misc/white.gif";
		}
		imgNew.src = images[newImage];
		currentImage = newImage;

		initialFade = false;

		fadeImage(0);

		if (category == "imageCategory") {
			loadImageInfo(newImage);
		}
	}
}


function loadImageInfo (imgId) {
	var infoFields = ["imageDescription", "header_left", "header_right", "footer"];
	for (var fieldId in infoFields) {
		field = infoFields[fieldId];
		document.getElementById(field).innerHTML = typeof content[imgId] != "undefined" && typeof content[imgId][field] != "undefined" && content[imgId][field] !== "" ? content[imgId][field] : "&nbsp;";
	}
	imageDescriptionPresent = typeof content[imgId] != "undefined" && typeof content[imgId].imageDescription != "undefined" && content[imgId].imageDescription !== "";
}

function fadeImage (opacity) {
	if (opacity <= 100) {
		setOpacity(imgNew, opacity);
		setOpacity(imgOld, (opacity-100)*-1);
		opacity += imageFadeValue;
		window.setTimeout("fadeImage("+opacity+")", fadeTime);
	} else {
		fadeInProgress = false;
		if (category == "imageCategory" && parseInt(document.getElementById("navDiv").style.width, 10) != document.getElementById("img1").width) {
			if (wentForward)	{
				highlightNav(102, -1, "imgnav", true);
			}			
			imageWidthChanged = true;
		}
	}
}

function setOpacity (obj, opacity) {
	opacity = (opacity == 100)?99.999:opacity;
	obj.style.filter = "alpha(opacity:"+opacity+")";	// IE/Win
	obj.style.KHTMLOpacity = opacity/100;				// Safari bis 1.2, Konqueror
	obj.style.MozOpacity = opacity/100;					// Older Mozilla and Firefox
	obj.style.opacity = opacity/100;					// Safari 1.2, newer Firefox and Mozilla, CSS3
}

function highlightNav (id, step, itemtype, highlightCurrent) {
	if ( id == 100 && !imageDescriptionPresent ) {
		return;
	}
	if ( step > 0 && ( id == 101 && getRealNewImageId (currentImage - 1) > imagesLoaded ) || ( id == 102 && getRealNewImageId (currentImage + 1) > imagesLoaded ) ) {
		return;
	}
	if (id != currentImage || highlightCurrent) {
		if (typeof thumbOpacities[id] == "undefined") {
			thumbOpacities[id] = navOpacityPresets[itemtype].min;
		}
		thumbAction[id] = step;
		window.setTimeout("fadeNav("+id+", "+step+", '"+itemtype+"')", fadeTime);
	}
}

function fadeNav (id, step, itemtype) {
	if (step == thumbAction[id] && thumbOpacities[id] <= navOpacityPresets[itemtype].max - step && thumbOpacities[id] >= navOpacityPresets[itemtype].min - step) {
		thumbOpacities[id] += step*thumbFadeValue;
		setOpacity(document.getElementById("nav" + id), thumbOpacities[id]);
		window.setTimeout("fadeNav("+id+", "+step+", '"+itemtype+"')", fadeTime);
	} else if (imageWidthChanged) { 
		var newImgWidth = document.getElementById("img1").width;
		document.getElementById("navDiv").style.width = newImgWidth + "px";
		document.getElementById("navTable").style.width = newImgWidth + "px";
		document.getElementById("nav100").style.width = (newImgWidth-74) + "px";
		if (wentForward) {
			highlightNav(102, 1, "imgnav", true);
			wentForward = false;
		}
		imageWidthChanged = false;
	}
}

function startSlideshow () {
	window.setInterval("iterateThroughImages(1)", slideshowInterval);
}

function highlightNewsEntry(id) {
	for (var i = 1; i <= lastImageId; i++){
		document.getElementById('newsEntryDate' + i).style.color = '#000000';
		document.getElementById('newsEntryTitle' + i).style.color = '#000000';
	}
	document.getElementById('newsEntryDate' + id).style.color = '#34900d';
	document.getElementById('newsEntryTitle' + id).style.color = '#34900d';
}

function showNewsDetail (id) {
	images[100 + id] = content[id]['detailTextImage'];
	currentImage = 100 + id;
	document.getElementById("img1").src = images[100 + id];
	document.getElementById("newsTable").style.visibility = "hidden";
	document.getElementById("newsBackLink").style.visibility = "visible";
}

function showNewsOverview () {
	showImage(0);
	document.getElementById("newsTable").style.visibility = "visible";
	document.getElementById("newsBackLink").style.visibility = "hidden";
}

function contactAboutImpressumSwap(action) {
	var contactImg = action == 1 ? contactImpressumImage : contactAboutImage;
	document.getElementById("img").src = contactImg;
	document.getElementById("contactAboutImpressumLink" + (1 - action)).style.visibility = "visible";
	document.getElementById("contactAboutImpressumLink" + action).style.visibility = "hidden";
	if(action == 1) {
		document.getElementById("contactMailLink").style.visibility = "hidden";
		document.getElementById("contactAgbLink").style.visibility = "visible";
	} else {
		document.getElementById("contactMailLink").style.visibility = "visible";
		document.getElementById("contactAgbLink").style.visibility = "hidden";
	}
}

function imagePreloader () {	
	if (imageToPreload >= firstImageId) {
		if (category == "imageCategory" && imageToPreload <= lastImageId) {
			document.getElementById("nav" + imageToPreload).style.visibility = "visible"; 
			highlightNav(imageToPreload, 1, "thumbsInitial", true);
		}
		imagesLoaded++;
	}
	
	do {
		imageToPreload++;
	} while (imageToPreload < preloadImagesCount && typeof preloadImages[imageToPreload] == "undefined");

	if (imageToPreload < preloadImagesCount) {
		if (navigator.appName.search("Explorer") > -1) {
			var preloadImage = document.createElement("<img src=\"" + preloadImages[imageToPreload] + "\" alt=\"\" class=\"preload\" onload=\"imagePreloader(true)\" />");
			document.getElementById("preloadDiv").appendChild(preloadImage);
		} else {
			var preloadImage = document.getElementById("preloadImage");
			preloadImage.src = preloadImages[imageToPreload];
			preloadImage.onload = imagePreloader;
		}
	}
}
