window.onload = function() {
	initPopup();
	initPopupLinks();
}

function initPopup () {
	var popup = document.getElementById("popup");
	popupClose = document.createElement('div');
	popupClose.id = 'popupClose';
	popupClose.innerHTML = '<p><a href="#" onclick="closePopup()"><img src="fileadmin/franziskus/art/pclose.gif" width="16" height="14" alt="schliessen" title="schliessen"></a></p>';
	popup.appendChild(popupClose);
}

function initPopupLinks() {
	var links = document.getElementsByTagName('a');
	for (var i=0; i < links.length; i++) {
		if (links[i].className.match(/popupLink/)) {
			links[i].onclick = openPopup;
		}
	}
}

function closePopup() {
	var popup = document.getElementById("popup");
	popup.style.display = "none";
	var popupContent = document.getElementById("popupContent");
	if (popupContent){
		popup.removeChild(popupContent);
	}
	return false
}

function openPopup() {
	closePopup();
	var popupContent = document.getElementById("popupContent");
	var popup = document.getElementById("popup");
	var popupImage;
	var followLink = true;
	
	popupContent = document.createElement('div');
	popupContent.id = 'popupContent';
	popup.appendChild(popupContent);
	
	popup.style.width = 'auto';
	popup.style.height = 'auto'; 
	if (this.className.match(/w([0-9]{1,4})/)) {
		popup.style.width = RegExp.$1 + 'px';
	}
	if (this.className.match(/h([0-9]{1,4})/)) {
		popup.style.height = RegExp.$1 + 'px';
	}

	
	if (this.href.match(/\.(png|jpg|jpeg|gif)$/i)) {
		popupImage = document.createElement('img');
		popupImage.src = this.href;
		popupContent.appendChild(popupImage);
		showPopup();
		followLink = false;
	}
	if (this.href.match(/\.(html|htm|php|jsp|gsp)(\?|$)/i)) {
		var xhr = createXHR(); 
		
		if (xhr) {
			xhr.onreadystatechange = function() { 
				if(xhr.readyState == 4) {
					if(xhr.status == 200) {
						var bodyRegex = /<body[^>]*>([\s\S]*)<\/body[^>]*>/i;
						var regexResult = bodyRegex.exec(xhr.responseText);
						popupContent.innerHTML = regexResult[1];
						showPopup();
					}
			     }
			}		
			xhr.open('GET', this.href,  true); 
			xhr.send(null);
			followLink = false;
		}
	}
	
	return followLink
}

function showPopup() {
	var popup = document.getElementById('popup');
	relocatePopup();
	popup.style.display = 'block';
	popup.style.position = 'absolute';
}

function relocatePopup () {
	var popup = document.getElementById('popup');
	var top = getScrollTop();
	popup.style.top = top + 20 + 'px';
	if (timeout) {
		window.clearTimeout(timeout);
	}
	var timeout = window.setTimeout("relocatePopup()", 10);
}

function getScrollTop() {
	var scrollTop;
	// all except Explorer
	if (window.pageYOffset) {
		scrollTop = window.pageYOffset;
	}
	// Explorer 6 Strict
	else if (document.documentElement && document.documentElement.scrollTop) {
		scrollTop = document.documentElement.scrollTop;
	}
	// all other Explorers
	else if (document.body) {
		scrollTop = document.body.scrollTop;
	}
	return scrollTop;
}

function createXHR() {
	var request = false;
		try { 
			request = new ActiveXObject('Msxml2.XMLHTTP');
		}
		catch (err2) {
			try { 
				request = new ActiveXObject('Microsoft.XMLHTTP');
			}
			catch (err3) {
				try {
					request = new XMLHttpRequest();
				}
				catch (err1) {
					request = false;
				}
			}
		}
	return request;
}