function HttpClient() { }
 HttpClient.prototype = {
		requestType:'POST', // a  GET,  POST típusok átadása az open függvénynek
		isAsync:false, //  true érték esetén aszinkron hívások hajtódnak végre
		xmlhttp:false, // itt tárolható egy XMLHttpRequest példány
		callback:false,
		// XMLHttpRequest -re irányuló híváskor ez kerül meghívásra
		// egyéni betöltési effektus használatához saját függvény állítható be
		onSend:function(){document.getElementById('HttpClientStatus').style.display = 'block';},
		// a readyState változó 4 értéke esetén hívódik meg,
		// ez a visszahívás előtt kerül meghívásra
		onLoad:function(){document.getElementById('HttpClientStatus').style.display ='none';},
		// http-hiba bekövetkeztekor ez kerül meghívásra
		onError:function(error) {alert(error.message);},
		// metódus az xmlhttpclient kezdőértékének beállítására
		init:function() {
		try {
		// Mozilla / Safari
			this.xmlhttp = new XMLHttpRequest();
		} catch (e) {
		// IE
			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) { throw new Error('Unable to create XMLHttpRequest.');}
		}
		},

		// metódus lapkérés létrehozására
		// url: sztring paraméter; az oldal, ahová a kérés irányul
		// payload: sztring paraméter; amely küldésre kerül, ha
		// POST kérésről van szó

		makeRequest: function(url,payload) {
			if (!this.xmlhttp) {this.init();}
			this.xmlhttp.open(this.requestType,url,this.isAsync);
			// állítsuk be az onReadyStateChange-et, mivel Mozilla használatakor,
			// teljesített hívás után az alapértelmezett érétkre áll vissza
			var self = this;
			this.xmlhttp.onreadystatechange = function(){self._readyStateChangeCallback(); }
			this.xmlhttp.send(payload);
			if (!this.isAsync){return this.xmlhttp.responseText;}
		},
		
		// belső metódus a készenléti állapot megváltozásának kezelésére
		_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(new Error('HTTP Error Making Request: '+'['+this.xmlhttp.status+'] '+this.xmlhttp.statusText));
			}
			break;
			}
		}
}
