var xmlHttp;

function showPopup(URL) {
	document.body.style.cursor = 'progress';
	if (typeof XMLHttpRequest != 'undefined') {
		xmlHttp = new XMLHttpRequest();
	}
	
	if (!xmlHttp) {
	// Internet Explorer 6 und älter
		try {
			xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				xmlHttp  = null;
			}
		}
	}
	xmlHttp.onreadystatechange = handleStateChange;
	xmlHttp.open("GET", URL, true);
	xmlHttp.send(null);
	document.body.style.cursor = 'default';
	return;
}

function showPopupHTML(html) {
	var layerObject;
	
	layerObject = document.getElementById('PopUpLayer') ;
	layerObject.style.zIndex = '1';
	layerObject.innerHTML = html;
	layerObject.style.display = "block";
	posPopUp();
		
	return;
}

function handleStateChange() {

	if (xmlHttp.readyState == 4) {
		var layerObject;
		var pos;
		
		layerObject = document.getElementById('PopUpLayer') ;
		layerObject.style.zIndex = '1';
		layerObject.innerHTML = xmlHttp.responseText;
		layerObject.style.display = "block";
 		posPopUp();
 		xmlHttp = null;
	}
}

function posPopUp() {
	layerObject = document.getElementById('PopUpLayer') ;
		
 	if( typeof( window.innerWidth ) == 'number' ) {  
        myHeight = window.innerHeight;  
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {  
        myHeight = document.documentElement.clientHeight;  
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {  
        myHeight = document.body.clientHeight;  
    }  
	
	toppos = ((document.documentElement.scrollTop)+(myHeight/2) - (element_height(layerObject)/2));
	layerObject.style.top = toppos+"px";
	clientwidth = (document.documentElement.clientWidth != 0) ? document.documentElement.clientWidth : document.body.clientWidth;
	layerObject.style.left = ((clientwidth/2) - (element_width(layerObject) / 2))+'px';
	hideElement('SELECT', layerObject);
	layerObject.style.zIndex = '100000';
}

function closePopUp () {
	var layerObject = document.getElementById('PopUpLayer') ;
	layerObject.innerHTML = '';
	layerObject.style.display = "none";
	showElement('SELECT');
}


function element_width(ref_object)
{
	if(ref_object = element_query(ref_object)) {
		if(ref_object.width) {
			return ref_object.width;
		}

		if(ref_object.offsetWidth) {
			return ref_object.offsetWidth;
		}
	}
	return 0;
}

function element_height(ref_object)
{
	if(ref_object = element_query(ref_object)) {
		if(ref_object.width) {
			return ref_object.height;
		}

		if(ref_object.offsetWidth) {
			return ref_object.offsetHeight;
		}
	}
	return 0;
}


function element_query(ref_object) {
	if(!(typeof(ref_object) == "object")) {
		return (ref_object = document.getElementById(ref_object))? ref_object: 0;
	}
	return ref_object;
}


function hideElement ( elmID, overDiv ) {
	if(document.all) {
		for(var i = 0; i < document.all.tags( elmID ).length; i++) {
			var obj = document.all.tags( elmID )[i];
			if(!obj || !obj.offsetParent) continue;

			// Find the element's offsetTop and offsetLeft relative to the BODY tag.
			objLeft	  = obj.offsetLeft;
			objTop	  = obj.offsetTop;
			objParent = obj.offsetParent;

			while(objParent.tagName.toUpperCase() != 'BODY') {
				objLeft	 += objParent.offsetLeft;
				objTop	 += objParent.offsetTop;
				objParent = objParent.offsetParent;
			}

			objHeight = obj.offsetHeight;
			objWidth  = obj.offsetWidth;

			if((overDiv.offsetLeft + overDiv.offsetWidth) <= objLeft);
			else if((overDiv.offsetTop + overDiv.offsetHeight) <= objTop);
			/* CHANGE by Charlie Roche for nested TDs*/
			else if(overDiv.offsetTop >= (objTop + objHeight + obj.height));
			/* END CHANGE */
			else if(overDiv.offsetLeft >= (objLeft + objWidth));
			else {
				obj.style.visibility = 'hidden';
			}
		}
	}
}

function showElement (elmID) {
	if (document.all) {
		for (var i = 0; i < document.all.tags( elmID ).length; i++) {
			var obj = document.all.tags(elmID)[i];
			if (!obj || !obj.offsetParent) continue;
			obj.style.visibility = '';
		}
	}
}
