/* ajaxMakeRequest(url, callback, mode, params, xml) {{{
url - skrypt serwera obslugujacy zadanie
callback - nazwa funkcji w jezyku javascript obslugujaca wynik dzialania funkcji serwera
mode - sposob przekazywania parametrow: "POST" lub "GET" - wielkosc liter nie ma znaczenia
params - lancuch parametrow przekazywanych do serwera, postaci zmienna1=wartosc1&zmienna2=wartosc2
xml - true - gdy serwer zwraca dokument xml, false - odpowiedz serwera zostanie potraktowana jako tekstowy lancuch znakow
*/
function ajaxMakeRequest(url, callback, mode, params, xml) {
	var http_request = false;

	//params = decodeURIComponent(params);

	oldmode = mode;
	mode = new String(mode).toUpperCase();
	if(mode != 'POST' && mode != 'GET') {
		alert('mode: should be POST or GET (current value is: '+oldmode+')');
		return;
	}
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
			// See note below about this line
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	
	http_request.onreadystatechange = function() { eval('ajaxCallBack(http_request, callback, xml)'); };	 
	http_request.open(mode, url, true);
		
	if(mode == 'POST' && params != null)
		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.send(params);
}// ajaxMakeRequest }}}

/* ajaxCallBack(http_request, callback, xml) {{{
funkcja wywolywana jako standardowa obsluga odpowiedzi serwera poprzez funkcje ajaxMakeRequest
nie powinna byc wywolywana recznie 
*/
function ajaxCallBack(http_request, callback, xml) {
	
	if(http_request.readyState == 4){
			if(http_request.status == 200){
				if(xml == true) 
					eval(callback+'(http_request.responseXML);');			
				else 
					eval(callback+'(http_request.responseText);');
			}
			else {
				
				alert('There was a problem with the request.');
			}
	}
}// ajaxCallBack }}}


