<!--
var xmlHttp = createXmlHttpRequestObject();

// Создать объект xml...
function createXmlHttpRequestObject()
{
	var xmlHttp;
	
	// Если сценарий запушен под IE
	if(window.ActiveXObject)
	{
		try
		{
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e)
			{
				xmlHttp = false;
			}
		}
	}
	else // или запушен браузер Mozilla или др.
	{
		try
		{
			xmlHttp = new XMLHttpRequest();
		}
		catch(e)
		{
			xmlHttp = false;
		}
	}
	if(!xmlHttp)
		alert("Ошибка создания XMLHttpRequest объекта");
	else return xmlHttp;
}

// Заполняем ссылку на объект XMLHttpRequest
var callbackFunc;
var url;
var param;

var rType=0;
var IsLoop=0;

var IsShowProgress=true;// показывать прогресс бар или нет

// вызывается по получении сообщения от сервера
function OnAnswerServer()
{	
  // продолжать можно только, если транзакция с сервером завершена
  if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
  {
  	ShowHideProgress(0);
    // значение 200 означает, что транзакция успешно завершена
    if(xmlHttp.status == 200)
    {
      if(callbackFunc!=null && callbackFunc!='undefined')
      {
      	callbackFunc();
      }
      
      // повторить последовательность действий
      //window.setTimeout('AjaxRequest()', 5000);
  	}  	
		// код статуса HTTP, отличный от 200, говорит о наличии ошибки
    else
    {
      // подключиться через 3 секунды
      if(IsLoop!=null && IsLoop==1) if(rType==0) setTimeout('AjaxRequest(url, callbackFunc)', 3000); else setTimeout('AjaxRequestPost(url, param,callbackFunc)', 3000);
    }    
  }
}

// выполнить асинхронный запрос HTTP с помощью объекта XMLHttpRequest через GET
function AjaxRequest(_url, _callbackFunc)
{	
	xmlHttp.abort();
	url=_url;
	rType=0;
	if(_callbackFunc!=null && _callbackFunc!='undefined')	callbackFunc = _callbackFunc;
  
	// Работа возможна, если объект не занят
	if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0 || xmlHttp.readyState=="complete")
	{
		xmlHttp.open("GET", url, true);
    
		// определить метод, который будет обрабатывать ответы сервера
    xmlHttp.onreadystatechange = OnAnswerServer;
    xmlHttp.send(null);
    ShowHideProgress(1);		
	}
	else
	{
    // если соединение занято, то подключиться через секунду
    setTimeout('AjaxRequest(url, callbackFunc)', 1000);
	}
}

// выполнить асинхронный запрос HTTP с помощью объекта XMLHttpRequest через POST
function AjaxRequestPost(_url, _param, _callbackFunc)
{	
	xmlHttp.abort();
	url=_url;
	//param="seed="+Math.round(100*Math.random())+'&'+_param;
	param=_param;
	rType=1;

	if(_callbackFunc!=null && _callbackFunc!='undefined')	callbackFunc = _callbackFunc;
	
  // Работа возможна, если объект не занят
	if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0 || xmlHttp.readyState=="complete")
	{
		xmlHttp.open("POST", url, true);
    // определить метод, который будет обрабатиывать ответы сервера    
    xmlHttp.onreadystatechange = OnAnswerServer;
		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
		xmlHttp.setRequestHeader("Content-length", param.length); 
		xmlHttp.setRequestHeader("Connection", "close"); 
    xmlHttp.send(param);
    ShowHideProgress(1);
	}
	else
	{
    // если соединение занято, то подключиться через секунду
		setTimeout('AjaxRequestPost(url, param,callbackFunc)', 1000);
	}
}

function myErrHandler()
{	
 // здесь выполняем нужные нам действия
// ShowHideProgress(0);  
 
 // чтобы подавить стандартный диалог ошибки JavaScript, 
 // функция должна возвратить true
 // return true;
 
 return false;
}

//назначаем обработчик для события 
window.onerror = myErrHandler;

// показывает progress bar
function ShowHideProgress(flag)
{
	if(!IsShowProgress) return;
	Init();
	var bd=document.getElementsByTagName('BODY')[0];
	var div=document.getElementById('ajaxprogress');	
	if(div!=null && div!='undefined' && bd!=null && bd!='undefined')
	{		
		//alert(showProperties(bd,'d'));
		//div.style.left=(bd.scrollLeft+bd.scrollWidth)/2;
		//div.style.top=(bd.scrollHeight+bd.scrollTop)/2;
		locate_center(div);
		if(flag!=0)div.style.display=''; else div.style.display='none';
	}
}

function Init()
{
	var div=document.getElementById('ajaxprogress');
	if(div==null || div=='undefined')
	{		
		var div = document.createElement('div');
		div.setAttribute('id', 'ajaxprogress');
		div.style.display = 'none';
		div.innerHTML = '<IMG src="'+file_img_loading+'"><br>Загрузка...';
		var bd=document.getElementsByTagName('BODY')[0];	
		if(bd!=null && bd!='undefined')
		{
			bd.appendChild(div);
		}
	}
}

function locate_center(o)
{
	var sx = self.pageXOffset || (document.documentElement && document.documentElement.scrollLeft)   || document.body.scrollLeft;
	var sy = self.pageYOffset || (document.documentElement && document.documentElement.scrollTop)    || document.body.scrollTop;
	var dw = self.innerWidth  || (document.documentElement && document.documentElement.clientWidth)  || document.body.clientWidth;
	var dh = self.innerHeight || (document.documentElement && document.documentElement.clientHeight) || document.body.clientHeight;
	var ew = o.offsetWidth;
	var eh = o.offsetHeight;
	var x  = Math.round(dw/2)-(ew/2)+sx;
	var y  = Math.round(dh/2)-(eh/2)+sy;

	o.style.left = x+'px';
	o.style.top  = y+'px';
}

//-->
