/* Copyright it-motive AG, Duisburg */

/*

Name:		AJAXutils.js
Funktion:	Funktionen zu AJAX
Aufruf:

Parameter:

Resultat:

*/
/*
  	<script language="JavaScript" src="AJAXutil.js" type="text/javascript"></script>
*/

// AJAXrequestXML(url, handler, handlerArguments)		führt einen HTTP-GET Request aus und erwartet ein XML-Ergebnis.
// 		Parameter:
// 		- url: 		   			URL
// 		- handler:   			Return-Handler Funktion
// 		- handlerArguments:		Return-Handler Funktion Argumente (zus. zum httpRequest selbst (Struktur) - optional)
// 		Return:
// 		- true	wenn der Request möglich ist
// 		- false	sonst

function AJAXrequestXML(url, handler, handlerArguments)
{
	return(_AJAXrequestXML("GET", url, null, handler, handlerArguments));
}


// AJAXformRequestXML(url, handler, handlerArguments)		führt einen HTTP-POST Request aus und erwartet ein XML-Ergebnis.
// 		Parameter:
// 		- url: 		   			URL
// 		- form:		   			FORM Parameter (Aufbau wie URL-Parameter)
// 		- handler:   			Return-Handler Funktion
// 		- handlerArguments:		Return-Handler Funktion Argumente (zus. zum httpRequest selbst (Struktur) - optional)
// 		Return:
// 		- true	wenn der Request möglich ist
// 		- false	sonst

function AJAXformRequestXML(url, form, handler, handlerArguments)
{
	return(_AJAXrequestXML("POST", url, form, handler, handlerArguments));
}


// The real call (internal method)
function _AJAXrequestXML(type, url, form, handler, handlerArguments)
{
	var httpRequest = false;

	// Mindestens ein leerer String muss da sein
	if(type == "POST" && !form) form = "";

	// Request-Objekt bauen (je nach Browser)
	if(window.XMLHttpRequest)		// Mozilla, Safari,...
	{
		httpRequest = new XMLHttpRequest();
		if(type == "GET" && httpRequest.overrideMimeType) httpRequest.overrideMimeType('text/xml');
	}
	else if(window.ActiveXObject)	// IE
	{
		try     {       httpRequest = new ActiveXObject("Msxml2.XMLHTTP");                  }
		catch(e){ try { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} }
	}

	// Request abschicken
	if(!httpRequest) return(false);
	else
	{
		if(handlerArguments) httpRequest.onreadystatechange = function() { handler(httpRequest, handlerArguments); };
		else                 httpRequest.onreadystatechange = function() { handler(httpRequest); };

		// open request
		httpRequest.open(type, encodeURI(url), true);
		httpRequest.setRequestHeader("If-Modified-Since", "Thu, 1 Jan 1970 00:00:00 GMT");
		httpRequest.setRequestHeader("Cache-Control", "no-cache");

		// send request
		if(type == "POST")
		{
			// set header information
			httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			httpRequest.setRequestHeader("Content-length", form.length);
			httpRequest.setRequestHeader("Connection", "close");

			httpRequest.send(form);
		}
		else httpRequest.send(null);

		return(true);
	}
}

