// JavaScript Document
//Gibt browserunabhängig ein XMLHttpRequest-Objekt zurück
function $(ident)
{
	try{return document.getElementById(ident)}
	catch(e){return false;}	
}

function getXMLHttpRequest()
{
if(window.XMLHttpRequest){
	//relevanter Code für Firefox, Opera, Safari, Konqueror, etc.
	return new XMLHttpRequest();
}else
	if(window.ActiveXObject){
		try{
		//XMLHTTP (neu) für Internet Explorer
		return new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				//XMLHTTP (alt) für Internet Eyplorer
				return new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){return null;}
			}
			}
			return null;
}
//Die Klasse Ajax
function Ajax(){
	//Eigenschaften desklarieren und initalisieren
	this.url="";
	this.params="";
	this.method="GET";
	this.onError=function(msg){ alert(msg)};
	this.onSuccess=null;
}
Ajax.prototype.doRequest=function(){
	//Überprüfen der Angaben
	if(!this.url){
		this.onError("Es wurde kein URL angegeben.Der Request wird abgebrochen.");
		return false;
	};
	if(!this.method){
		this.method="GET";
		}else{this.method=this.method.toUpperCase();}
	//XMLHttpRequest Objekt erstellen
	var xmlHttpRequest=getXMLHttpRequest();
	if(!xmlHttpRequest)
		{
			this.onError("Es konnte kein XMLHttpRequest-Objekt erstellt werden.");
			return false;
		}
	//Zugriff auf Klasse für readyStateHandler ermöglichen
	var _this=this;
	
	//Fallunterscheidung nach Übertragungsmethode
	switch(this.method)
	{
		case "GET": xmlHttpRequest.open(this.method,this.url+"?"+this.params,true);
					xmlHttpRequest.setRequestHeader('Content-Type','text/xml; charset=ISO-8859-1');
					xmlHttpRequest.setRequestHeader('encoding','ISO-8859-1');
					xmlHttpRequest.onreadystatechange=readyStateHandler;
					xmlHttpRequest.send(null);
					break;
		case "POST":xmlHttpRequest.open(this.method,this.url,true);
					xmlHttpRequest.onreadystatechange=readyStateHandler;
					xmlHttpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
					//xmlHttpRequest.setRequestHeader('Content-length', this.params.length);
					//xmlHttpRequest.setRequestHeader('Connection', 'close');
					xmlHttpRequest.send(this.params);
					break;
		
		}
		//Private Methode zur Verarbeitung der erhaltenen Daten
		function readyStateHandler(){
			if(xmlHttpRequest.readyState <4){return false;}
			if(xmlHttpRequest.status==200 || xmlHttpRequest.status==304)
			{
				if(_this.onSuccess){
					_this.onSuccess(xmlHttpRequest.responseText,xmlHttpRequest.responseXML);
					
					}else{
					if(_this.onError){
						_this.onError("["+xmlHttpRequest.status+" "+xmlHttpRequest.statusText+"] Es trat ein Fehler bei der Datenübertragung auf.");
						}
					}
			}
			}
			
	}