//copyright, BENE ÁDÁM © - all rights reserved
//JavaScript - AJAX
//include base.js

var TAjax = Class({
	construct: function () {
		var t=this;
		this.arguments = arguments;
		this.xmlHttpReq = null;

		if (window.XMLHttpRequest) {
			this.xmlHttpReq = new XMLHttpRequest();
		} else if (window.ActiveXObject) { // IE
			this.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
		} else {
			t.onError(1);
		}
	},

	onReady: function(txt) {
		alert(txt);
		return true;
	},
	
	onSend: function() {
	},
	
	onReadyStateChange: function(r,s,t) {
		//alert(r+","+s+","+t);
	},

	onError: function(eCode) {
		switch (eCode) {
			case 1: alert("Nem lehet létrehozni AJAX objektumot! (Régi a böngésződ!)\nAJAX error."); break;
			//case 2: alert("Ajax hiba. Próbáld újra.\nAjax error. Try again."); break;
			default: alert("AJAX HIBA.\nAJAX ERROR."); break;
		}
		return false;
	},
	
	send: function (strURL,getParams,postParams,disableScript,cache) {
		var t=this;
		t.construct();
		t.onSend();
		this.xmlHttpReq.onreadystatechange=function() {
			var rt="";
			try {rt=t.xmlHttpReq.responseText} catch(e){};
			//t.onReadyStateChange(t.xmlHttpReq.readyState,t.xmlHttpReq.status,rt);
			if (t.xmlHttpReq.readyState==4) {
				if (t.xmlHttpReq.status==200) {
					if (disableScript!=true) EvalResponse(rt);
					var r = t.onReady(rt);
					//t.construct();
					return r;
				} else {
					return t.onError(2);
				}
				t.construct();
			}
		};
		params="";
		if (typeof getParams=="object") {
			var first=true;
			for (i in getParams) {
				if (first) params=i+"="+urlencode(getParams[i]); else
					params+="&"+i+"="+urlencode(getParams[i]);
				first=false;
			}
		}
		if (strURL.indexOf("?")==-1) strURL+="?"+params; else strURL+="&"+params;

		params="";
		if (typeof postParams=="object") {
			var first=true;
			for (i in postParams) {
				if (first) params=i+"="+urlencode(postParams[i]); else
					params+="&"+i+"="+urlencode(postParams[i]);
				first=false;
			}
		}
		if (cache!=true) {
			var d = new Date();
			if (typeof params=="string") {
				if (params.length>0) params+="&xajaxtimex="+String(d.getTime());
					else params+="xajaxtimex="+String(d.getTime());
			}
		}
		//alert(strURL);
		this.xmlHttpReq.open("POST",strURL,true);
		this.xmlHttpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
		//this.xmlHttpReq.setRequestHeader("Content-length", params.length);
		//this.xmlHttpReq.setRequestHeader("Connection", "close");
		this.xmlHttpReq.send(params);
	}
});
