/* PY-Ajax-Setup  */
	var aPyPfad = new Object();
	aPyPfad['ROOT'] = '';
	aPyPfad['PY'] = '/py.908.1611';
	aPyPfad['PV'] = '/hacks/pv.908.1611';
	aPyPfad['PK'] = '/hacks/pk.908.1611';
	aPyPfad['PC'] = '/hacks/pc.908.1611';
/*
	Funktionsübesicht
		
		_py_ajax_instanzieren()		// Ajax-Request-Objekt instanzieren		rHTTP
		
		py_ajax_puffern(	sVariable, sDaten)	// Puffert Daten für Post	bPost = true
		py_ajax ( sURL )



		Aufruf Synchron:
			sEmpfang = py_ajax( sUrl )
			alert(sEmpfang);



		Aufruf Asynchron:
			py_ajax (sUrl, "sFunktionsNameAsynchron" )
			
			function $sFunktionsNameAsynchron(sEmpfang)
			{	
				alert(sEmpfang);
			}
			
			Wenn nur ein Request ohne Empfang abgesetzt werden soll, 
			muss trotzdem ein Name mit einem Minus davor eingegeben werden.
			Der Name dient zum unterscheiden von mehreren asynchronen 
			Requests.

*/

	
	var garHTTP = new Object();
	var gasPuffer = new Object();




	function py_ajax(	sUrl, 					// Adresse
					sFunktionAsynchron	 	// Funktion wenn assynchroner Aufruf
					)
	{
		document.body.style.cursor = "default";

		var sUrl;
		
		if (typeof sFunktionAsynchron == "undefined")		
		{
			sFunktionAsynchron  = "*";
		}
				

		if (sFunktionAsynchron == "")
		{
			sFunktionAsynchron = "*";
		}

		
		if (typeof garHTTP[sFunktionAsynchron] == "undefined")
		{
			garHTTP[sFunktionAsynchron] = 	_py_ajax_instanzieren() ;
		}
		r = garHTTP[sFunktionAsynchron];
		
		
		if (sUrl.indexOf("?") > 0)
		{
			sUrl += "&py_ajax=" + sFunktionAsynchron;
		}
		else
		{
			sUrl += "?py_ajax=" + sFunktionAsynchron;
		}
		
		
		
		
		if ( (typeof gasPuffer[sFunktionAsynchron] != "undefined") || sUrl.length > 50)
		{

			if ( (typeof gasPuffer[sFunktionAsynchron] == "undefined") )
			{
				gasPuffer[sFunktionAsynchron] = "";
			}




			// POST-Request	
				if (sFunktionAsynchron != "*")
				{
					r.onreadystatechange = _py_ajax_empfangen_asynchron;
				}


				r.open(	'post', 
						sUrl,
						(sFunktionAsynchron != "*") // Aufruf synchon, nur letzter Aufruf asynchron
						);

				r.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				r.setRequestHeader("Content-length", gasPuffer[sFunktionAsynchron].length);
				r.setRequestHeader("Connection", "close");
				r.send(gasPuffer[sFunktionAsynchron]);		
				gasPuffer[sFunktionAsynchron] = "";
		} 
		else
		{

			
			// GET-Request
				if (sFunktionAsynchron != "*")
				{
					r.onreadystatechange = _py_ajax_empfangen_asynchron;
				}
				r.open('get', sUrl, (sFunktionAsynchron != "*"));
				r.send(null);	
		}
		
		
		if (sFunktionAsynchron == "*")
		{
			document.body.style.cursor = "default";
			return r.responseText;			
		}
		
	}
	
	





	
	function py_ajax_puffern( sFunktionAsynchron, sVariable, sDaten )
	{
		if (typeof gasPuffer[sFunktionAsynchron] == "undefined")
		{
			gasPuffer[sFunktionAsynchron]	= escape(sVariable) + '=' + escape(sDaten) + '&';				
		}
		else
		{
			gasPuffer[sFunktionAsynchron]	+= escape(sVariable) + '=' + escape(sDaten) + '&';	
		}	
	}


	
	
	
	
	
	
	
	function _py_ajax_empfangen_asynchron()
	{
		for (sFunktion in garHTTP)
		{
			if (garHTTP[sFunktion].readyState == 4)
			{
				var s = garHTTP[sFunktion].responseText;
				
				if(typeof window[sFunktion] != 'function')
				{
					alert(sFunction.indexOf('-') + 'py_ajax-FEHLER: Es gibt keine Funktion "' + sFunktion + '".');
				}
			  	else
				{
					window[sFunktion](s);
				}
			}
		}
	}
	
	
	
	
	
	









	function _py_ajax_instanzieren() 
	{
		
		
		var r = false;

        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            r = new XMLHttpRequest();
            if (r.overrideMimeType) {
                r.overrideMimeType('text/xml');
                // zu dieser Zeile siehe weiter unten
            }
        } else if (window.ActiveXObject) { // IE
            try {
                r = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    r = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!r) 
		{
            alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
            return false;
        }
		
		return r;       
    }