function repl(str, se, re)
{
	var j = str.split(se).length - 1;

	var tmp_start = '';
	var tmp_end = str;
	
	var pos = 0;
	
	for(i=0; i<j; i++)
	{
		pos = tmp_end.indexOf(se);
		tmp_start = tmp_start + tmp_end.substring(0, pos) + re;
		tmp_end = tmp_end.substring(pos + se.length, tmp_end.length);
	}
	return tmp_start+tmp_end;
}

function addParam(param,name,value)
{
	return param + '&' + name + '=' + value;
}

function loadHTML(sURL,method,params,func,errfunc)
{
	var request=null;

	// пытаемся создать объект для MSXML 2 и старше
	if(!request) try {
		request=new ActiveXObject('Msxml2.XMLHTTP');
	} catch (e){}

	// не вышло... попробуем для MSXML 1
	if(!request) try {
		request=new ActiveXObject('Microsoft.XMLHTTP');
	} catch (e){}

	// не вышло... попробуем для Mozilla
	if(!request) try {
		request=new XMLHttpRequest();
	} catch (e){}

	if(!request)
		// ничего не получилось...
		return "";
 
	// делаем запрос
	if(method == 'GET')
	{
		//alert('start');
		request.open('GET', sURL + '?' + params, true);
		request.onreadystatechange=function()
		{
			if (request.readyState != 4) return	clearTimeout(timeout) // очистить таймаут при наступлении readyState 4
			if (request.status == 200)
			{
				// Все ок
				var rep = repl(request.responseText, '\'', '\\\'');
				rep = repl(rep, "\n", "\\\n");
				eval(func + '\'' + rep +'\');');
			}
			else
			{
				eval(errfunc + '();');
			}
		}
		request.send(null);
		var timeout = setTimeout( function(){ request.abort(); }, 100000);
	}
	else
	{
		request.open("POST", sURL, true);
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		request.onreadystatechange=function()
		{
			if (request.readyState != 4) return	clearTimeout(timeout) // очистить таймаут при наступлении readyState 4
			if (request.status == 200)
			{
				// Все ок
				var rep = repl(request.responseText, '\'', '\\\'');
				rep = repl(rep, "\n", "\\\n");
				eval(func + '(\'' + rep +'\');');
			}
			else
			{
				eval(errfunc + '();');
			}
		}
		request.send(params);
		var timeout = setTimeout( function(){ request.abort(); }, 100000);
	}
	// возвращаем текст
	//return request.responseText;
}