function HttpClient() { }
HttpClient.prototype = {
	requestType:'GET',
	isAsync=false,
	xmlhttp:false,
	onSend:function() {
		document.getElementById('HttpClientStatus').style.display='block';
	},
	onload:function() {
		document.getElementById('HttpClientStatus').styl.display='none';
	},
	onError:function() {
		alert(error);
	}
	init:function() {
		try {
			this.xmlhttp = new XMLHttpRequest();
		} catch (e) {
			var XMLHTTP_IDS = new Array('MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP');
			var success = false;
			for (var i=0;i < XMLHTTP_IDS.length && !success; i++) {
				try {
					this.xmlhttp = new ActiveXObject(XMLHTTP_IDS[i]);
					success = true;
				} catch (e) {}
			}
			if (!success) {
				this.onError('Nie można utworzyć obiektu XMLHttpRequest');
			}
		}
	},
	makeRequest: function(url,payload) {
		if (!this.xmlhttp) {
			this.init();
		}
		this.xmlhttp.open(this.requestType,url,this.isAsync);
		var self = this;
		this.xmlhttp.onreadystatechange = function() {
			self._readyStateChangeCallback(); 
		}
		this.xmlhttp.send(payload);
		if (!this.isAsync) {
			return this.xmlhttp.responseText;
		}
	},
	_readyStateChangeCallback:function() {
		switch (this.xmlhttp.readyState) {
			case 2:
				this.onSend();
				break;
			case 4:
				this.onload();
				if (this.xmlhttp.status == 200) {
					this.callback(this.xmlhttp.responseText);
				} else {
					this.onError('Błąd HTTP w czasie zgłaszania żądania: ' + '[' + this.xmlhttp.status + ']'+' ' + this.xmlhttp.statusText + '!');
				}
				break;
		}
	}
}
			

