var lAjaxError = 0;
var sAjaxError = 0;

function apAjax()
{
	this.url = "";
	this.method='GET';
	this.bWithErrorMsg = false;
	this.User = '';
	this.UserPwd = '';
	
	var xmlHttpRequest = ""; //getXMLHTMLRequest;
	var xmlDom = "";

	var _this = '';
	this.sErrorDesciption = '';
	this.sErrorSource = '';
	this.sErrorNumber = 02;
	
	var aParameter = new Array();
	var sRequestText = ""
	var sRequestXML = ""
		
		
//------------------------------------------------------------------------		
	this.RequestText = function()
	{
	
		return sRequestText;
	}	
	this.RequestXML = function()
	{
	
		return sRequestXML;
	}	
//-------------------------------------------------------------------------		
	this.AddParameter = function(Name, Value)		
	{
		a = new Array(Name, Value);
		aParameter.push( a);
	}
	
//--------------------------------------------------------------------------
	this.doRequest = function()
	{
		if(!this.url)
		{
			this.sErrorDesciption = 'Es wurde kein URL angegeben.';
			this.sErrorSource = 'apAjax';
			this.sErrorNumber = 5;
			return fase;
		}
 		if(!this.method) { this.method = "GET";}
		this.method = this.method.toUpperCase();
		if(this.method != 'GET' && this.method != 'POST')
	       {
			this.sErrorDesciption = 'Es wurde keine Sendemehtode angegeben. (GET oder POST)';
			this.sErrorSource = 'apAjax';
			this.sErrorNumber = 5;
			return fase;
		}
		 
		xmlHttpRequest = getXMLHTMLRequest();
		if(!xmlHttpRequest)
		{
			this.sErrorDesciption = 'Es konnte kein XMLHttpRequest-Objekt erstellt werden.';
			this.sErrorSource = 'apAjax';
			this.sErrorNumber = 5;
			return fase;
		}

		var sParam = "";
		var b = false;
		for(i = 0; i <  aParameter.length ; i++)
		{
			a = aParameter[i]; 
			if(b == true) 
			{
				sParam = sParam + '&';
			}
			sParam = sParam + a[0] + '=' + a[1];
			b = true;
		}
		var sUrl = "";

		xmlHttpRequest.onreadystatechange = readyStateHandler;

		if(this.method == 'GET')
		{
			sUrl = this.url + "?" + sParam;


			if(this.User)
			{ 
				xmlHttpRequest.open(this.method, sUrl, false, this.User, this.UserPwd);
			}
			else
			{
				xmlHttpRequest.open(this.method, sUrl, false);
			}
			xmlHttpRequest.send(null);
		}
		else
		{

			if(this.User)
			{ 
				xmlHttpRequest.open(this.method, this.url, false, this.User, this.UserPwd);
			}
			else
			{
				xmlHttpRequest.open(this.method, this.url , false);
			}
			xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	//		sUrl =   sParam;
			sUrl =  decodeURI( sParam);
			xmlHttpRequest.send(sUrl);
		}
		

		this.sErrorNumber = lAjaxError;
		this.sErrorDesciption = sAjaxError;			
		this.sErrorSource = "apAjax";
		
	}  //doRequest
	
//----------------------

	encodeData = function()
	{
		var sq = unescape(sRequestText);
//		var sq = sRequestText;
		sz = sq.split("+");
		sc = "";
		for(var i = 0; i < sz.length; i++)
		{
			if (i == 0)
			{
				sc = sz[i];
			}
			else
			{
				sc = sc + " " + sz[i];
			}
		}
		sRequestText = sc;
	
	}
//-------------------------------------------------------------------------------------------	
	readyStateHandler = function ()
	{	
	
	    try
	    {
		    if(xmlHttpRequest.ReadyState < 4)
	    	{
		    	return false;
		    }
		
		    if(xmlHttpRequest.status == 200 || xmlHttpRequest.status == 304)
		    {
			
			    lAjaxError = 0;
    			sAjaxError = '';			
	    		sRequestText = xmlHttpRequest.responseText;
		    	try
			    {			
				    if(xmlHttpRequest.responseXML)
    				{
	    				if(xmlHttpRequest.responseXML.xml)
		    			{
			    			sRequestXML = xmlHttpRequest.responseXML.xml;
				    	}
				    }
			    }
			    catch(e)
			    {
			    }


			    encodeData();
		    }
		    else
		    {
			    lAjaxError = xmlHttpRequest.status;
			    sAjaxError = xmlHttpRequest.statusText;			
			    this.sErrorNumber = xmlHttpRequest.status;
			
    		}
    	}
		catch(e)
		{
		}
		
        return true;
	}// readyStateHandler
		
//--------------------------------------------------------------------------------------
	function getXMLHTMLRequest() 
	{
		if (xmlHttpRequest) { return xmlHttpRequest;}
		if(window.XMLHttpRequest)
		{
			return new XMLHttpRequest;
		}
		else
		{
			if(window.ActiveXObject)
			{
				try
				{
					return new ActiveXObject('msxml2.XMLHTTP');
				}
				catch(e)
				{
					try
					{
						return new ActiveXObject('Microsoft.XMLHTTP');
					}
					catch(e) { return null;}
				}
			}
		}
		return null;
	}  // xmlHTMLRequest

}


