// LIGHTBOX PLUS
function LightBox(param) {

	/***** SETTINGS *****/
	var opacity = 70; 							// Transparenz des Hintergrunds
	var gap = 40;								// Mindestbreite des transparenten Rahmens um das Bild (in px)
	var border = 2; 							// Breite des Rahmens um das Bild
	var infobox = 25;							// Höhe der Infobox
	var loadSrc = "./_images/loading.gif"		// Ort und Name der Ladeanimation

	/***** CREATE NODES *****/
	var img = new Image();
	var load = new Image();
	var div0 = document.createElement("div");
	var div1 = document.createElement("div");
	var div2 = document.createElement("div");
	var a1 = document.createElement("a");

	/***** GLOBAL VARS *****/
	var browser = "unknown";
	var imgSrc = param.getAttribute("href");
	var imgDesc = param.name;
	var resize = false;
	var scroll = document.documentElement.scrollTop;
	var winHeight = document.documentElement.clientHeight;
		param.removeAttribute("href");

	checkBrowser();
	if (browser == "ie5.5" || browser == "ie5" || browser == "ie4") {
		document.location.href = imgSrc;
	} else {
		loading();
	}

	function checkBrowser() {
		if (document.ids) browser = 'nc4';
		else if( document.all && !document.getElementById ) browser = 'ie4';
		else if( window.opera && !document.createElement ) browser = 'op5';
		else if( window.opera && window.getComputedStyle )  {
			if(document.createRange) browser = 'op8';
			else if(window.navigate) browser = 'op7.5';
			else  browser = 'op7.2';
		}
		else if( window.opera && document.compatMode ) browser = 'op7';
		else if( window.opera && document.releaseEvents ) browser = 'op6';
		else if( document.contains && !window.opera ) browser = 'kq3';
		else if(window.pkcs11&&window.XML) browser = 'f15';
		else if( window.getSelection && window.atob ) browser = 'nn7';
		else if( window.getSelection && !document.compatMode ) browser = 'nn6';
		else if( window.clipboardData && document.compatMode ) browser = window.XMLHttpRequest? 'IE7' : 'IE6';
		else if( window.clipboardData ){ browser = 'ie5';
			if( !document.createDocumentFragment ) x+='.5';
			if( document.doctype && !window.print ) x+='m';}
		else if( document.getElementById && !document.all )  browser = 'op4';
		else if( document.images && !document.all )  browser = 'nn3';
		else if(document.clientWidth&&!window.RegExp) browser = 'kq2';
		else  browser = '???';
	}

	function loading() {
		load.src = loadSrc;
		if (load.complete) {
			createBacklayer();
		} else {
			load.onload = createBacklayer;
		}
	}

	function createBacklayer() {
		if (document.documentElement.scrollHeight > winHeight) {
			winHeight = document.documentElement.scrollHeight;
		}

		div0.id = "backlayer";
		div0.style.width = document.body.clientWidth + "px";
		div0.style.height = winHeight + "px";
		lucency(div0, opacity);
		div0.onmouseover = hideInfo;
		
		div2.id = "loading";
		div2.style.left = (document.body.parentNode.clientWidth - load.width) / 2 + "px";
		div2.style.top = (document.body.parentNode.clientHeight - load.height) / 2 + scroll + "px";
		div2.appendChild(load);
		
		document.body.appendChild(div0);
		document.body.appendChild(div2);
		loadImage();
	}

	function loadImage() {
		img.src = imgSrc;
		img.style.borderWidth = border + "px";
		if (img.complete) {
			openLightBox();
		} else {
			img.onload = openLightBox;
		}
	}

	function resizeImage() {
		var ratio = img.width / img.height;
		var factorX, factorY;
			factorX = (img.width + gap) / document.body.parentNode.clientWidth;
			factorY = (img.height + gap) / document.body.parentNode.clientHeight;
		if (factorX >= 1 || factorY >= 1) { // Bild ist zu groß
			if (factorX > factorY) { // Höhe ist limitierender Faktor
				img.width = document.body.parentNode.clientWidth - gap;
				img.height = img.width / ratio;
				resize = true;
			} else { // Breite ist limitierender Faktor
				img.height = document.body.parentNode.clientHeight - gap;
				img.width = img.height * ratio;
				resize = true;
			}
		} else { // Bild ist klein genug
			resize = false;
		}
	}

	function showInfo() {
		var div2 = document.createElement("div");
		var table = document.createElement("table");
		var tbody = document.createElement("tbody");
		var tr = document.createElement("tr");
		var td0 = document.createElement("td");
		var td1 = document.createElement("td");
		var td2 = document.createElement("td");

		function createContent() {
			if (imgDesc) {
				var txt0 = document.createTextNode(imgDesc);
					td0.appendChild(txt0);
					td0.style.textAlign = "left";
					td0.style.width = "33%";
			}
			if (resize) {
				var lnk1 = document.createElement("a");
				var txt1 = document.createTextNode("Originalgroesse");
					lnk1.onclick = closeLightboxAndMove;
					lnk1.appendChild(txt1);
					td1.appendChild(lnk1);
					td1.style.textAlign = "center";
					td1.style.width = "34%";
			}
			var lnk2 = document.createElement("a");
			var txt2 = document.createTextNode("schliessen");
				lnk2.onclick = closeLightbox;
				lnk2.appendChild(txt2);
				td2.appendChild(lnk2);
				td2.style.textAlign = "right";
				td2.style.width = "33%";
		}

		createContent();

		div2.id = "infobox";
		div2.style.height = infobox + "px";
		div2.style.width = img.width + "px";
		div2.style.left = border + "px";
		div2.style.bottom = border + "px";

		tr.appendChild(td0);
		tr.appendChild(td1);
		tr.appendChild(td2);
		tbody.appendChild(tr);
		table.appendChild(tbody);
		div2.appendChild(table); 
		div1.appendChild(div2);
}

	function hideInfo() {
		for (var i = 0; i < div1.childNodes.length; i++) {
			if (div1.childNodes[i].nodeName == "DIV") {
				div1.childNodes[i].style.display = "none";
			}
		}
	}

	function closeLightbox() {
		param.setAttribute("href", imgSrc);
		document.body.removeChild(document.body.lastChild);
		document.body.removeChild(document.body.lastChild);
	}

	function closeLightboxAndMove() {
		param.setAttribute("href", imgSrc);
		document.body.removeChild(document.body.lastChild);
		document.body.removeChild(document.body.lastChild);
		document.location.href = img.src;
	}

	function lucency(node, value) {
		if (typeof node.style.filter != "undefined") { 
			node.style.filter = "alpha(opacity=" + value + ")";
		} else {
			node.style.opacity = value / 100;
		}
	}

	function openLightBox() {
		resizeImage();

		div1.id = "frontlayer";
		div1.style.left = (document.body.parentNode.clientWidth - img.width) / 2 + "px";
		div1.style.top = (document.body.parentNode.clientHeight - img.height) / 2 + scroll + "px";
		a1.onclick = closeLightbox;
		a1.onmouseover = showInfo;

		a1.appendChild(img);
		div1.appendChild(a1);
		document.body.replaceChild(div1, div2);
	}

}

// FRAMEBOX PLUS
function FrameBox(ref, width, height, scr) {

	/***** SETTINGS *****/
	var opacity = 70;	// Transparenz des Hintergrunds
	var gap = 40;		// Mindestbreite des transparenten Rahmens
	var border = 2;		// Abstand der Infobox zur Framebox
	var infobox = 25;	// Höhe der Infobox

	/***** GLOBAL VARS *****/
	var cWidth = document.body.clientWidth;
	var cHeight = document.body.clientHeight;
	var cHeightS = document.body.scrollHeight;
	var iDesc = ref.name;
	var iSource = ref.getAttribute("href");
	var iWidth, iHeight;

	/***** CREATE NODES *****/
	var div0 = document.createElement("div");
	var div1 = document.createElement("div");
	var div2 = document.createElement("div");
	var iframe = document.createElement("iframe");

	/***** APPEND NODES *****/
	document.body.appendChild(div0);
	document.body.appendChild(div1);
	document.body.appendChild(div2);
	div2.appendChild(iframe);

	/***** LOAD IFRAME *****/
	iframe.src = iSource;
	ref.setAttribute("href", "#");
	openFrameBox();


	function lucency(node, value) {
		if (typeof node.style.filter != "undefined") { 
			node.style.filter = "alpha(opacity=" + value + ")";
		} else {
			node.style.opacity = value / 100;
		}
	}

	function getFrameSettings() {
		if (typeof width == "undefined") {
			iWidth = cWidth - (5 * gap);
		} else {
			if (cWidth - (2 * gap) < width) {
				iWidth = cWidth - (2 * gap);
			} else {
				iWidth = width;
			}
		}
		if (typeof height == "undefined") {
			iHeight = cHeight - (5 * gap) + infobox + border;
		} else {
			if (cHeight - (2 * gap) < height) {
				iHeight = cHeight - (2 * gap);
			} else {
				iHeight = height;
			}
		}
		if (typeof scr != "undefined") {
			iframe.setAttribute("scrolling", scr);
		}
	} 

	function createInfobox() {
		var table = document.createElement("table");
		var tbody = document.createElement("tbody");
		var tr = document.createElement("tr");
		var td0 = document.createElement("td");
		var td1 = document.createElement("td");
		var td2 = document.createElement("td");

		function createContent() {
			if (iDesc) {
				var txt0 = document.createTextNode(iDesc);
					td0.appendChild(txt0);
					td0.style.textAlign = "left";
					td0.style.width = "33%";
			}
			var lnk1 = document.createElement("a");
			var txt1 = document.createTextNode("Vollbild");
				lnk1.onclick = closeFrameboxAndMove;
				lnk1.appendChild(txt1);
				td1.appendChild(lnk1);
				td1.style.textAlign = "center";
				td1.style.width = "34%";
			var lnk2 = document.createElement("a");
			var txt2 = document.createTextNode("Schliessen");
				lnk2.onclick = closeFramebox;
				lnk2.appendChild(txt2);
				td2.appendChild(lnk2);
				td2.style.textAlign = "right";
				td2.style.width = "33%";
		}

		createContent();

		tr.appendChild(td0);
		tr.appendChild(td1);
		tr.appendChild(td2);
		tbody.appendChild(tr);
		table.appendChild(tbody);
		div1.appendChild(table);
}

	function closeFramebox() {
		ref.setAttribute("href", iSource);
		document.body.removeChild(document.body.lastChild);
		document.body.removeChild(document.body.lastChild);
		document.body.removeChild(document.body.lastChild);
	}

	function closeFrameboxAndMove() {
		ref.setAttribute("href", iSource);
		document.body.removeChild(document.body.lastChild);
		document.body.removeChild(document.body.lastChild);
		document.body.removeChild(document.body.lastChild);
		document.location.href = iSource;
	}

	function openFrameBox() {
		getFrameSettings()
		createInfobox();

		div0.id = "backlayer";
		div0.style.width = cWidth + "px";
		if (cHeight > cHeightS) {
			div0.style.height = cHeight + "px";
		} else {
			div0.style.height = cHeightS + "px";
		}
		lucency(div0, opacity);

		div1.id = "infobox";
		div1.style.height = infobox;
		div1.style.width = iWidth;
		div1.style.left = (cWidth - iWidth) / 2;
		div1.style.top = (cHeight - (iHeight + infobox + border)) / 2;

		div2.id = "frontlayer";
		div2.style.left = (cWidth - iWidth) / 2;
		div2.style.top = ((cHeight - (iHeight + infobox + border)) / 2) + infobox + border;

		iframe.width = iWidth;
		iframe.height = iHeight;
		iframe.setAttribute("frameborder", "0");
	}
}

