// JavaScript Document

var httpRequest="";

function getPage(PageAddress,method,data,mode,header) {
	if(!method || method=="GET"){
		httpRequest = getXMLHttpRequest();
		httpRequest.open('GET', encodeURI(PageAddress), false);
		httpRequest.send(null);
		if (httpRequest.statusText=="OK"){
			ReqText=httpRequest.responseText;
			return php_error_detect(ReqText,PageAddress);
			}
		else
			{
			error_text="Status "+httpRequest.status+": "+httpRequest.statusText+"\nResponse:\n"+httpRequest.response;
			alert("Es ist ein XMLHttpRequest-Fehler (GET) aufgetreten!\nSeitenadresse: "+PageAddress+"\n"+error_text);
			error_reporting("err_type=XMLHttpRequest(GET)&err_page="+amp_to_subst(PageAddress)+"&err_text="+amp_to_subst(error_text));
			return false;
			}
		}
	else
		{
		if(!data){data='nix=nix'};
		if(!header){header='Content-Type:application/x-www-form-urlencoded; charset=UTF-8'};
		httpRequest=getXMLHttpRequest();
		httpRequest.open(method,PageAddress,mode);
		httpRequest.onreadystatechange=displayStatus;
		httpRequest.setRequestHeader(header.split(':')[0],header.split(':')[1]);
		httpRequest.send(spez_encoding(data));
		if (!mode){
			ReqText=httpRequest.responseText;
			return php_error_detect(ReqText,PageAddress);
			}
		}	
	}
	
function spez_encoding(data)
	{
	data=data.replace(/\+/g,"[P!L!U!S]");
	data=data.replace(/"/g,"[a!m!p]quot;");
	return encodeURI(data);
	}
	

function displayStatus()
	{
    if(httpRequest.readyState==4){
		if (httpRequest.statusText!="OK")
			{
			var sPath = window.location.pathname;
			var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
			error_text="Status "+httpRequest.status+": "+httpRequest.statusText+"\nResponse:\n"+httpRequest.response;
			alert("Es ist ein XMLHttpRequest-Fehler (POST) aufgetreten!\nSeitenadresse: "+sPage+"\n"+error_text);
			error_reporting("err_type=XMLHttpRequest(POST)&err_page="+amp_to_subst(sPage)+"&err_text="+amp_to_subst(error_text));
			}
    	}
	}

function getXMLHttpRequest() 
{
    if (window.XMLHttpRequest) {
        return new window.XMLHttpRequest;
    }
    else {
        try {
            return new ActiveXObject("MSXML2.XMLHTTP.3.0");
        }
        catch(ex) {
            return null;
        }
    }
}

function error_reporting(data)
	{
	header='Content-Type:application/x-www-form-urlencoded; charset=UTF-8';
	httpRequest=getXMLHttpRequest();
	httpRequest.open('POST','../inc/save_error.php',false);
	httpRequest.setRequestHeader(header.split(':')[0],header.split(':')[1]);
	httpRequest.send(data);
	}
function php_error_detect(ResponseText,PageAddress){
	errorflag=false;
	error_text="";
	err_type="";
	if (ResponseText.substr(10,11)=='Parse error'){
		errorflag=true;
		error_text="Seitenadresse: "+PageAddress+"\n"+ResponseText.substr(10);
		err_type="Parse error";
		}
		
	if (ResponseText.indexOf("Query not successful") > -1){
		if (!errorflag){
			error_text="Seitenadresse: "+PageAddress+"\n";
			}
		errorflag=true;
		err_type=err_type+"SQL\n";
		error_text=error_text+ResponseText.substr(ResponseText.indexOf("Query not successful"))+"\n";
		}
		
	if (ResponseText.indexOf("<br />\n<b>Fatal error</b>") > -1){
		if (!errorflag){
			error_text="Seitenadresse: "+PageAddress+"\n";
			}
		errorflag=true;
		err_type=err_type+"PHP fatal error\n";
		error_text=error_text+ResponseText.substr(ResponseText.indexOf("Fatal error"))+"\n";
		}
		
	if (ResponseText.indexOf("<br />\n<b>Notice</b>") > -1){
		if (!errorflag){
			error_text="Seitenadresse: "+PageAddress+"\n";
			}
		errorflag=true;
		err_type=err_type+"PHP Notice\n";
		i=ResponseText.indexOf("<br />\n<b>Notice</b>");
		i2=i;
		while (i > -1){
			error_text=error_text+ResponseText.substr(i2+10,ResponseText.substr(i2+9).indexOf("<br />")-1)+"\n";
			i=ResponseText.substr(i2+10).indexOf("<br />\n<b>Notice</b>");
			i2=i2+i+10;
			}
		}
	if (errorflag){
		error_text=remove_tags(BRtoCrLf(error_text));
		error_data="err_type="+err_type+"&err_page="+amp_to_subst(PageAddress)+"&err_text="+amp_to_subst(error_text);
		alert(error_text);
		error_reporting(error_data);
		}
	return ResponseText;
	}

function error_reporting(){
	return true;
	}
	
function amp_to_subst(str){
	return str.replace(/\&/g,'[a!m!p]');
	}
function subst_to_amp(str){
	return str.replace(/\[a!m!p]/g,'&');
	}

