var http_request = false;
var wait_time = false;
var wait_on = false;
var response;
var strict;
var func;

/*
	a böngészőt elfedő objektum
*/
function createRequestObject() {
	http_request = false;

	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} 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) {
		return false;
	}
}


function escape(response)
{
	response = response.replace(/\\/g, '\\\\');
	response = response.replace(/"/g,  '\\"');
	response = response.replace(/\n/g, '\\n');
	response = response.replace(/\r/g, '\\r');
	response = response.replace(/\t/g, '\\t');
	return response
}

/*
	adott url-ről xml-t vagy szöveget ad át a megfelelő függvénynek
	hiba esetén false-t ad vissza
*/
function getData(fnc, url, method, data, no_header_check) {
	func=fnc;
	if (show_wait) 
	{
		show_wait();
	}
	if (createRequestObject()==false) 
	{
		return false;
	}
	http_request.onreadystatechange = function()
	{
		if (http_request.readyState == 4)
		{
			if (http_request.status == 200)
			{
				if (method == "XML")
				{
					response = http_request.responseXML;
				} else 
				{
  				response = escape(trim(http_request.responseText));
				}
				strict=false;
				try
				{
					strict = http_request.getResponseHeader("X-XMLHTTP-RESPONSE") || no_header_check ? true : false;
				} 
				catch (e) {}
				if (hide_wait)
				{	
					hide_wait();
				}
				if (strict)
				{
					eval(func + '("' + response + '")');
				}
				else 
				{
					document.location.reload();
					return;
				}
			} 
			else 
			{
				return false;
			}
		}
	};
	http_request.open('GET', url, true);
	http_request.send(data ? data : null);
}

function getXML(func, url) {
	getData(func, url, "XML");
}

function getText(func, url, no_header_check) {
    getData(func, url, "Text", null, no_header_check ? no_header_check : null);
}

function show_wait() {
	wait = document.getElementById("wwww");
	if (wait) 
	{
		wait_time=true;
		wait_on=true;
		window.setTimeout("auto_hide_wait()",1000);
		wait.style.display="block";
	}
}

function hide_wait() {
	wait_on=false;
	wait=document.getElementById("wwww");
	if (wait && !wait_time) {
		wait.style.display="none";
	}
}

function auto_hide_wait() {
	wait_time=false;
	if (!wait_on) {
		hide_wait();
	}
}

