/**
 * funckja wywołuje XMLHttpRequest
 * @param url 
 * @param method , metoda wywołania
 * @param params tablica z parametrami wywołania, na zmine klucz wartość np ['id','20','show','1'] zostani przesłane jako id=20&show=1
 * @param onReadyChangeStateFunction nawa funkcji która zostanie wywołana jeżeli wywołanie XMLHttpRequest się powiedzie
 * 		  funkcja dostanie jako pierwszy parametr instancję obiektu XMLHttpRequest, jeżeli ajaxCall będzie miało więcej parametrów
 *        zostaną one przekazane jako kolejne parametry do funkcji onReadyChangeStateFunction
 */

function ajaxCall(url,method,params,onReadyChangeStateFunction) {			
	var http_request = false;	
	 if (window.XMLHttpRequest) { 
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/plain');            
        }
    } else if (window.ActiveXObject) {
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }      
	if (http_request) {			
		if(arguments.length > 4) {						
			var argv = new Array();
			for(var i=4; i < arguments.length; i++) {
				argv.push(arguments[i]);	
			}
		} else {
			var argv = false;
		}		
		http_request.onreadystatechange = function() {						
			if (http_request.readyState == 4) {
	            if (http_request.status == 200) {	            	
	                if (onReadyChangeStateFunction != null && typeof onReadyChangeStateFunction == "function") {            				
                		onReadyChangeStateFunction(http_request);					
	                }
	            } else {
	                alert('Nie powiodło się wywołanie XMLHttpRequest.');
	            }
	        }		
		};
		if (method != null) {
			if (method.toUpperCase() != 'GET' && method.toUpperCase() != 'POST') {
				method = 'POST';
			}
		} else {
				method = 'POST';
		}
		http_request.open(method.toUpperCase(), url, true);
		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		var queryString = '';
		for(k in params) queryString += k+'='+encodeURIComponent(params[k])+'&';
		http_request.send(queryString);		
	} else {
		alert('Nie powiodło się wywołanie XMLHttpRequest');		
	}
}

function alertXMLHttpRequestResponseText(http_request) {	
        alert(http_request.responseText);	
}
