
function Ajax_SendRequest(method, url, parameter) {
	
	if ('GET' != method && 'POST' != method) {
		alert('Falsche Methode zum Senden des Befehles!');
		return false;
	}
	
	if ('' == url) {
		alert('Ajax-Befehl fehlt!');
		return false;
	}
	
	if (!parameter) {
		parameter = null;
	}
	
	//erstellen des requests
	var req = null;
	
	try {
		req = new XMLHttpRequest();
		
		/*if (req.overrideMimeType) {
			req.overrideMimeType('text/html');
		}*/

	} catch (ms) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (nonms) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				req = null;
			}
		}
	}
	
	if (req == null) {
		alert("Error creating request object!");
	}
	
	//anfrage erstellen (GET, url ist localhost,
	//request ist asynchron
	req.open(method, url, true);

	
	//Beim abschliessen des request wird diese Funktion ausgef?hrt
	req.onreadystatechange = function() {
		
		switch(req.readyState) {
			
			case 4:
			
				if(200 != req.status) {
					
					alert('Fehler: ' + req.status);
					
				} else {
					
					//alert(req.responseText);
					Ajax_HandleResult_XML(0, Ajax_StringToXml(req.responseText));
					
				}
				
				break;
				
			default:
				return false;
				break;
				
		}
		
	};
	
	req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	
	if (null !== parameter) {
		req.setRequestHeader("Content-length", parameter.length);
	}
	
	req.setRequestHeader("Connection", "close");
	req.send(parameter);
	
}

function Ajax_HandleResult_XML(error, xml) {
	
	switch (error) {
		
		case 0:
			
			err = xml.getElementsByTagName('err');
			
			if (0 < err.length) {
				
				errMsg = "FEHLER:\n";
				
				for (i=0; i<err.length; i++) {
					
					errMsg += "\n" + err[i].childNodes[0].nodeValue;
					
				}
				
				Ajax_DisplayError(errMsg);
				
			} else {
				
				switch(xml.lastChild.nodeName) {
					
					case 'hoersturz_ajax':
						Haedus.Fnc.Ajax.Page.handleResponse(xml);
						break;
					
					case 'hoersturz_ajax_gallery':
						Gallery_HandleExchange(xml);
						break;
					
					default:
						alert('Error: Handle nicht gefunden!');
						break;
					
				}
				
				return;
				
			}
			
			break;
		
		case 1:
			alert('Error');
			break;
		
		case 2:
			alert('Error');
			break;
		
	}
	
	return false;
	
}

function Ajax_DisplayError(what) {
	
	alert(what);
	Chat_SessionDeactivate();
	
}

function Ajax_StringToXml(xmlString) {
	
	var xmlDoc;
	
	//for IE
	if (window.ActiveXObject) {
		
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = "false";
		xmlDoc.loadXML(xmlString);
		
	//for Mozilla, Firefox, Opera, etc.
	} else if (document.implementation && document.implementation.createDocument) {
		
		xmlDoc = (new DOMParser()).parseFromString(xmlString, "text/xml");
		
	}
	
	return xmlDoc;
	
}
