function doGetLoad(url, show_in)
	{
	if (window.XMLHttpRequest)
		{
		request = new XMLHttpRequest();
		request.onreadystatechange = function()
			{
			abortRequest = window.setTimeout("request.abort();", 10000);
			if (request.readyState == 4)
				{
				clearTimeout(abortRequest);
				if (request.status == 200)
					{
					document.getElementById(show_in).innerHTML = request.responseText;
					}
				else
					{
					alert("Не удалось получить данные:\n" + request.statusText);
					}
				}
			return false;
			}
		request.open("GET", url, true);
		request.send(null);
		return false;
		}
	else if (window.ActiveXObject)
		{
		request = new ActiveXObject("Microsoft.XMLHTTP");
		if (request)
			{
			request.onreadystatechange = function()
				{
				abortRequest = window.setTimeout("request.abort();", 10000);
				if (request.readyState == 4)
					{
					clearTimeout(abortRequest);
					if (request.status == 200)
						{
						document.getElementById(show_in).innerHTML = request.responseText;
						}
					else
						{
						alert("Не удалось получить данные:\n" + request.statusText);
						}
					}
				return false;
				}
			request.open("GET", url, true);
			request.send();
			return false;
			}
		}

	return false;
	}



function doPost(url, show_in, parameters)
	{
	if (window.XMLHttpRequest)
		{
		request = new XMLHttpRequest();
		request.onreadystatechange = function()
			{
			abortRequest = window.setTimeout("request.abort();", 10000);
			if (request.readyState == 4)
				{
				clearTimeout(abortRequest);
				if (request.status == 200)
					{
					document.getElementById(show_in).innerHTML = request.responseText;
					}
				else
					{
					alert("Не удалось получить данные:\n" + request.statusText);
					}
				}
			return false;
			}
        request.open('POST', url, true);
            request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            request.setRequestHeader("Content-length", parameters.length);
            request.setRequestHeader("Connection", "close");
            request.send(parameters);
			return false;
		}
	else if (window.ActiveXObject)
		{
		request = new ActiveXObject("Microsoft.XMLHTTP");
		if (request)
			{
			request.onreadystatechange = function()
				{
				abortRequest = window.setTimeout("request.abort();", 10000);
				if (request.readyState == 4)
					{
					clearTimeout(abortRequest);
					if (request.status == 200)
						{
						document.getElementById(show_in).innerHTML = request.responseText;
						}
					else
						{
						alert("Не удалось получить данные:\n" + request.statusText);
						}
					}
				return false;
				}
            request.open('POST', url, true);
            //request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');
            request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=windows-1251');
            request.send(parameters);
			return false;
			}
		}

	return false;
	}

function kotUrlEncode(s)
    {
    return s.replace('%','%25','g').replace('&','%26','g').replace('+','%2B','g').replace('?','%3F','g');
    }



function checkForm(formId, result_area)
    {
    var formElement = document.getElementById(formId);
    var params = "";
    var alerts = "";

    for (i = 0; i < formElement.length; i ++)
        {
        if(i != 0) params += "&";
        if(formElement.elements[i].name == "name" && formElement.elements[i].value == "") alerts += "- name\r\n";
        else if(formElement.elements[i].name == "message" && formElement.elements[i].value == "") alerts += "- message\r\n";
        params += formElement.elements[i].name + "="+kotUrlEncode(formElement.elements[i].value);
        }
    if(alerts != "") alert("Please, fill in the following fields:\r\n" + alerts);
    else
        {
        doPost("/news/save_message.php", result_area, params + "&remote=yes");
        document.getElementById('message').value = "";
        }
    return false;
    }




function gOfs(obj){
    var x = 0, y = 0;
    if(window.opera)
    {
        if(obj.style.position=='absolute')
        {
            x=obj.style.posLeft;
            y=obj.style.posTop;
        }else{
            while (obj.offsetParent)
            {
                x+=obj.offsetLeft;
                y+=obj.offsetTop;
                obj=obj.offsetParent;
            }
        }
    }else if(obj.offsetParent)
    {
        while (obj.offsetParent)
        {
            x+=obj.offsetLeft;
            y+=obj.offsetTop;
            obj=obj.offsetParent;
        }
    }else if (obj.x)
    {
        x += obj.x;
        y += obj.y;

    }
    return {x: x, y: y}
}

function doGetLoad_cal(url, show_in)
	{
    ofs = gOfs(document.getElementById(show_in));
    if (window.XMLHttpRequest)
		{
		request = new XMLHttpRequest();
		request.onreadystatechange = function()
			{
			abortRequest = window.setTimeout("request.abort();", 10000);
			if (request.readyState == 4)
				{
				clearTimeout(abortRequest);
				if (request.status == 200)
					{
                    document.getElementById('calendar_bootdiv').style.display = 'none';
                    document.getElementById(show_in).innerHTML = request.responseText;
					}
				else
					{
					alert("Не удалось получить данные:\n" + request.statusText);
					}
                }
            else if (request.readyState == 3 || request.readyState == 1)
    				{
                    document.getElementById('calendar_bootdiv').style.display = '';
                    document.getElementById('calendar_bootdiv').style.top = ofs.y;
                    document.getElementById('calendar_bootdiv').style.left = ofs.x;
                    document.getElementById('calendar_bootdiv').style.width = document.getElementById('calendar_area').offsetWidth;
                    document.getElementById('calendar_bootdiv').style.height = document.getElementById('calendar_area').offsetHeight;
    				}
			return false;
			}
		request.open("GET", url, true);
		request.send(null);
		return false;
		}
	else if (window.ActiveXObject)
		{
		request = new ActiveXObject("Microsoft.XMLHTTP");
		if (request)
			{
			request.onreadystatechange = function()
				{
				abortRequest = window.setTimeout("request.abort();", 10000);
				if (request.readyState == 4)
					{
					clearTimeout(abortRequest);
					if (request.status == 200)
						{
                        document.getElementById('calendar_bootdiv').style.display = 'none';
                        document.getElementById(show_in).innerHTML = request.responseText;
						}
					else
						{
						alert("Не удалось получить данные:\n" + request.statusText);
						}
					}
                else if (request.readyState == 3 || request.readyState == 1)
        				{
                        document.getElementById('calendar_bootdiv').style.display = '';
                        document.getElementById('calendar_bootdiv').style.top = ofs.y;
                        document.getElementById('calendar_bootdiv').style.left = ofs.x;
                        document.getElementById('calendar_bootdiv').style.width = document.getElementById('calendar_area').offsetWidth;
                        document.getElementById('calendar_bootdiv').style.height = document.getElementById('calendar_area').offsetHeight;
        				}
				return false;
				}
			request.open("GET", url, true);
			request.send();
			return false;
			}
		}

	return false;
	}




function doGetRequest(url)
	{
	if (window.XMLHttpRequest)
		{
		request = new XMLHttpRequest();
		request.open("GET", url, true);
		request.send(null);
		return false;
		}
	else if (window.ActiveXObject)
		{
		request = new ActiveXObject("Microsoft.XMLHTTP");
		if (request)
			{
			request.open("GET", url, true);
			request.send();
			return false;
			}
		}

	return false;
	}







function getRequestStateText(code)
	{
	switch (code)
		{
		case 0: return "Ошибка!"; break;
		case 1: return "Идёт загрузка..."; break;
		case 2: return "Дерево каталогов загружено."; break;
		case 3: return "Идёт загрузка..."; break;
		case 4: return "Дерево каталогов загружено."; break;
		}
	}




function processRequestChange()
	{
	var response_div;
	response_div = document.getElementById("show_in_this").value;
	//document.getElementById("resultdiv").style.display = 'none';
	abortRequest = window.setTimeout("request.abort();", 10000);
	// если выполнен
	if (request.readyState == 4)
		{
		clearTimeout(abortRequest);
		//document.getElementById("statuscode").value = request.status;
		//document.getElementById("statustext").value = request.statusText;
		// если успешно
		if (request.status == 200)
			{
			//document.getElementById("resultdiv").style.display = 'block';
			document.getElementById(response_div).innerHTML = request.responseText;
			document.getElementById("state").innerHTML = "&nbsp;";
			}
		else
			{
			alert("Не удалось получить данные:n" + request.statusText);
			}
		document.getElementById("loading").style.display = 'none';
		}
	// иначе, если идет загрузка или в процессе - показываем слой "Загружаются данные"
	else if (request.readyState == 3 || request.readyState == 1)
		{
		document.getElementById("state").innerHTML = "Загрузка...";
		//document.getElementById("loading").style.display = 'block';
		}
	return false;
	}





