var IMAGE_CLOSE_NEVER = 1;
var IMAGE_CLOSE_ON_CLICK = 2;
var IMAGE_CLOSE_ON_MOUSE_OUT = 3;

function showImage ( url, elemName, closeMode, text, urlHigh, elemNameHigh, closeModeHigh ) {
	/* default values for missing parameters */
	if ( showImage.arguments.length < 1 ) return true;
	if ( showImage.arguments.length < 2 ) elemName = '';
	if ( showImage.arguments.length < 3 ) closeMode = IMAGE_CLOSE_NEVER;
	if ( showImage.arguments.length < 4 ) text = '';
	if ( showImage.arguments.length < 5 ) urlHigh = '';
	if ( showImage.arguments.length < 6 ) elemNameHigh = '';
	if ( showImage.arguments.length < 7 ) closeModeHigh = IMAGE_CLOSE_ON_CLICK;
	
	/* load url in window if no element specified */
	if ( elemName == '' ) {
		window.open ( url, '_blank', 'location=no,menubar=no,status=no,toolbar=no, width=640, height=480' );
		return false;
	}
	
	/* get node */
	var elem = document.getElementById ( elemName );
	if ( elem == null ) return true;
	
	/* hide previous image */
	hideImage ( elemName );
	
	addImageDom ( url, elemName, closeMode, text, urlHigh, elemNameHigh, closeModeHigh );
	return false;
}

function addImageDom ( url, elemName, closeMode, text, urlHigh, elemNameHigh, closeModeHigh ) {
	/* abort on missing parameters */
	if ( addImageDom.arguments.length < 7 ) return false;

	/* get node */
	var elem = document.getElementById ( elemName );
	if ( elem == null ) return true;
	
	/* create img */
	var img = document.createElement ( 'img' );
	img.src = url;

	/* create text */
	if ( text != '' ) {
		var span = document.createElement ( 'span' );
		var br = document.createElement ( 'br' );
		span.appendChild ( br );
		var txt = document.createTextNode( text );
		span.appendChild ( txt );
	}

	var eventName = '';
	var infoText = ''
	if ( closeMode == IMAGE_CLOSE_ON_CLICK ) {
		eventName = 'onclick';
		infoText = 'click to close image'
	}
	if ( closeMode == IMAGE_CLOSE_ON_MOUSE_OUT ) {
		eventName = 'onmouseout';
		infoText = 'leave image to close it';
	}
	if ( eventName != '') {
		var code = 'hideImage(\'' + elemName + '\')';
		if ( ( ! document.all ) && ( document.getElementById ) ) {
			var event = document.createAttribute ( eventName );
			event.nodeValue = code;
			img.setAttributeNode(event);
		}
		// workaround for IE 5.x
		if ( ( document.all ) && ( document.getElementById ) ) {
			img[eventName] = new Function ( code );
		}
		if ( infoText != '' ) {
			if ( ( ! document.all ) && ( document.getElementById ) ) {
				var info = document.createAttribute('title');
				info.nodeValue = infoText;
				img.setAttributeNode(info);
			}
			// workaround for IE 5.x
			if ( ( document.all ) && ( document.getElementById ) ) {
				img['title'] = infoText;
			}
		}
	}
	
	/* recursiv event for high-res image */
	if ( urlHigh != '' ) {
		var alink = document.createElement ( 'a' );
		alink.href = urlHigh;
		alink.target = '_blank';
		
		var code = 'return showImage(\'' + urlHigh + '\',\'' + elemNameHigh + '\',\'' + closeModeHigh + '\')';
		var txt = 'click to view high-res';
		if ( ( ! document.all ) && ( document.getElementById ) ) {
			var event = document.createAttribute('onclick');
			event.nodeValue = code;
			alink.setAttributeNode(event);
			var info = document.createAttribute('title');
			info.nodeValue = txt;
			alink.setAttributeNode(info);
		}
		// workaround for IE 5.x
		if ( ( document.all ) && ( document.getElementById ) ) {
			alink['onclick'] = new Function ( code );
			alink['title'] = txt;
		}
		
		alink.appendChild ( img );
		
		/* append nodes to dom-tree */
		elem.appendChild ( alink );
		if ( text != '' ) elem.appendChild ( span );
	} else {
		/* append node to dom-tree */
		elem.appendChild ( img );
		if ( text != '' ) elem.appendChild ( span );
	}
	elem.style.display = "block";
	
	return false;
}

function hideImage ( elemName ) {
	var elem = document.getElementById ( elemName );
	if ( elem == null ) return true;
	elem.style.display = "none";
	while ( elem.childNodes.length > 0 )
		elem.removeChild ( elem.firstChild );
}

var firstUrl = '';
var firstText = '';
var firstUrlHigh = '';

function setFirstImage ( url, text, urlHigh ) {
	if ( setFirstImage.arguments.length < 1 ) return false;
	if ( setFirstImage.arguments.length < 2 ) text = '';
	if ( setFirstImage.arguments.length < 3 ) urlHigh = '';
	firstUrl = url;
	firstText = text;
	firstText = firstText.replace ( /&auml;/, "ä" );
	firstText = firstText.replace ( /&ouml;/, "ö" );
	firstText = firstText.replace ( /&uuml;/, "ü" );
	firstText = firstText.replace ( /&Auml;/, "Ä" );
	firstText = firstText.replace ( /&Ouml;/, "Ö" );
	firstText = firstText.replace ( /&Uuml;/, "Ü" );
	firstText = firstText.replace ( /&szlig;/, "ß" );
	firstUrlHigh = urlHigh;
}

function showFirstImage ( elemName, closeMode, elemNameHigh, closeModeHigh ) {
	/* default values for missing parameters */
	if ( showFirstImage.arguments.length < 1 ) elemName = '';
	if ( showFirstImage.arguments.length < 2 ) closeMode = IMAGE_CLOSE_NEVER;
	if ( showFirstImage.arguments.length < 3 ) elemNameHigh = '';
	if ( showFirstImage.arguments.length < 4 ) closeModeHigh = IMAGE_CLOSE_ON_CLICK;
	
	return showImage ( firstUrl, elemName, closeMode, firstText, firstUrlHigh, elemNameHigh, closeModeHigh );
}

var allImages = new Array();

function addImage ( url, text, urlHigh ) {
	/* default values for missing parameters */
	if ( addImage.arguments.length < 1 ) return false;
	if ( addImage.arguments.length < 2 ) text = '';
	if ( addImage.arguments.length < 3 ) urlHigh = '';
	var i = allImages.length;
	allImages[i] = new Array();
	allImages[i]["url"] = url;
	text = text;
	text = text.replace ( /&auml;/, "ä" );
	text = text.replace ( /&ouml;/, "ö" );
	text = text.replace ( /&uuml;/, "ü" );
	text = text.replace ( /&Auml;/, "Ä" );
	text = text.replace ( /&Ouml;/, "Ö" );
	text = text.replace ( /&Uuml;/, "Ü" );
	text = text.replace ( /&szlig;/, "ß" );
	allImages[i]["text"] = text;
	allImages[i]["urlhigh"] = urlHigh;
}

function showAllImages ( elemName, closeMode, elemNameHigh, closeModeHigh ) {
	/* default values for missing parameters */
	if ( showAllImages.arguments.length < 1 ) return false;
	if ( showAllImages.arguments.length < 2 ) closeMode = IMAGE_CLOSE_NEVER;
	if ( showAllImages.arguments.length < 3 ) return false;
	if ( showAllImages.arguments.length < 4 ) closeModeHigh = IMAGE_CLOSE_ON_CLICK;
	
	/* get node */
	var elem = document.getElementById ( elemName );
	if ( elem == null ) return true;
	
	/* hide previous image */
	hideImage ( elemName );
	
	/* insert all images to dom-tree */
	for (var i = 0; i < allImages.length; i++) {
		addImageDom ( allImages[i]["url"], elemName, closeMode, allImages[i]["text"], allImages[i]["urlhigh"], elemNameHigh, closeModeHigh );
		var br1 = document.createElement ( 'br' );
		elem.appendChild ( br1 );
		var br2 = document.createElement ( 'br' );
		elem.appendChild ( br2 );
	}
	return false;
}
