﻿// JavaScript Document

var request=null;

/*
Wrapper-Funktion zum Konstruieren eines Request-Objekts

Parameter:
reqType: Der HTTP-Anforderungstyp, wie etwa GET oder POST.
url: Die Url des Server-Programms.
asynch: Ob die Anforderung asynchron gesendet werden soll oder nicht.
respHandle: Der Name der Funktion, die die Antwort verarbeitet.
Der fünfte Parameter, repräsentiert als arguments[4], sind die Daten, die eine POST-Anforderung senden soll.
*/

function httpRequest(reqType,url,asynch,respHandle)
	{
		if (window.XMLHttpRequest)
		{
			request = new XMLHttpRequest();
		} 
		else if (window.ActiveXObject)
		{
			request = newActiveXObject("Msxml2.XMLHTTP");
			if (!request) 
			{
				request = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
		//Auf eine leere Anforderung testen, falls kein ActiveXObject initialisiert wurde
		if (request) 
		{
			//Falls der reqType-Parameter POST ist, sind das 5.Argument die POST-Daten
			
			if (reqType.toLowerCase() != "post")
			{
				initReq(reqType,url,asynch,respHandle);
			}
			else
			{
				//Die mit POST verschickten Daten
				var args = arguments[4];
				
				if (args != null && args.length > 0)
				{
					initReq(reqType,url,asynch,respHandle,args);
				} 
				else 
				{	//selbergeschrieben, wenn nur ausgelesen werden soll
					initReq(reqType,url,asynch,respHandle);
				}
			}
		} 
		else
		{
			alert("Der Browser lässt das Speichern nicht zu!");
		}
	}
	
	/*Initialisieren eines Request-Objects, das bereits konstruiert ist*/
	function initReq(reqType,url,bool,respHandle) 
	{
		try
		{
			/*Festlegen der Funktion, die die HTTP-Antwort verarbeitet*/
			request.onreadystatechange = respHandle;
			request.open(reqType,url,bool);
			
			//Falls der reqType-Parameter POST ist, dann handelt es sich beim 5.Argument der Funktion um die mit POST verschickten Daten
			if (reqType.toLowerCase() == "post")
			{
				request.setRequestHeader("Content-Type",
								 "application/x-www-form-urlencoded; charset=UTF-8");
				if (arguments[4]) 	//selbergeschrieben, wenn nur ausgelesen werden soll
					postdata = arguments[4];
				else 
					postdata = null;
				
				request.send(postdata);
			}
			else
			{
				request.send(null);
			}
		}
		catch (errv)
		{
			alert("Die Anwendung kann im Moment keine Verbindung zum Server herstellen. Bitte versuchen Sie es in einigen Sekunden nochmal. \n" +
				  "Fehlerinformation: " + errv.message);
		}
	}
