/* 
 **************************************************************************************************************************************************************
 **** Доп. функции и переменные для работы с AJAX-запросами ***************************************************************************************************
 ************************************************************************************************************************************************************** 
*/

var ajaxRequest      = AjaxGetXMLHttpObj(); //создаем новый экземпляр XMLHttpRequest
var ajaxAllowRequest = true;                //разрешает или запрещает новый запрос
var ajaxTimer;                              //таймер для расчета таймаута ajax-запроса
var ajaxPrgBarID = 0;                       //id "прогресс-бара"(0  - отсутствует)
var ajaxErrorID  = 0                        //id сообщения ошибки, если истек таймаут запроса (0 - не выводить)
//также в html необходимо задать переменную ajaxTimeout, где указать таймаут ajax-запроса в мс. "по умолчанию"

/*
 *** Делаем новый запрос **************************************************************************************************************************************
*/
// ***input:
// - reqURL      - строка запроса
// - reqMethod   - тип запроса('GET' или 'POST')
// - reqPostData - post-данные
// - reqTimeout  - таймаут запроса в мс. (0 - не ставить, 'def' - взять из переменной ajaxTimeout, или сам таймаут)
// - prgBarID    - id "прогресс-бара"(0  - отсутствует) (учитывается, только если ставим таймаут)
// - errorID     - id сообщения ошибки, если истек таймаут запроса (0 - не выводить) (учитывается, только если ставим таймаут)
function AjaxNewQuery(reqURL,reqMethod,reqPostData,reqTimeout,prgBarID,errorID) {
	//если нужно поставить таймаут соединения
	if(reqTimeout != 0) {
		//запрещаем новый запрос
		ajaxAllowRequest = false;
		//сохраняем id ошибки
		ajaxErrorID  = errorID;
		//сохраняем id "прогресс-бара"
		ajaxPrgBarID = prgBarID;
		//если прогресс бар задан - отображаем его
		if(prgBarID != 0) {
			AjaxPrgBar(prgBarID,'show');	
		}
		//если значение таймаута по умолчанию
		if(reqTimeout == 'def') {
			aTimeout = ajaxTimeout;
		}
		//если определенное значение
		else aTimeout = reqTimeout;
		//задаем таймаут соединения
		ajaxTimer = window.setTimeout("AjaxExpireTimeout()",aTimeout);
	}
	//открываем соединение
	ajaxRequest.open(reqMethod,reqURL,true);
	//если post-запрос
	if(reqMethod == "POST") {
		//отправляем заголовки
		ajaxRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		//отправляем post-данные
		ajaxRequest.send(reqPostData);
	}
	//если get-запрос
	else ajaxRequest.send(null);
}

/*
 *** Проверяет можно ли сделать новый запрос *************************************************************************************************************************
*/
// ***return:
// - true, если доступен новый запрос или false, если нет
function AjaxCanQuery() {
	if(ajaxAllowRequest) {
		return true
	}
	else return false;
}

/*
  *** Ост. таймер для расчета таймаута AJAX-запроса и разр. новый запрос **********************************************************************************************
*/
function AjaxAbortQuery() {
	//обнуляем таймер
	window.clearTimeout(ajaxTimer);	
	//отменяем старый запрос		
	ajaxRequest.abort();
	//разрешаем новый
	ajaxAllowRequest = true;
	//если был "прогресс-бар" - скрываем
	if(ajaxPrgBarID != 0) {
		AjaxPrgBar(ajaxPrgBarID,'hide');
	}
}


/*
  *** Разрешает новый AJAX запрос, если от старого долго нет ответа ****************************************************************************************************
*/
function AjaxExpireTimeout() {
	//перенаправляем запрос на пустую функцию
	ajaxRequest.onreadystatechange = AjaxVoidResult;
	//отменяем старый запрос
	ajaxRequest.abort();
	//разрешаем новый
	ajaxAllowRequest = true;	
	//если был "прогресс-бар" - скрываем
	if(ajaxPrgBarID != 0) {
		AjaxPrgBar(ajaxPrgBarID,'hide');
	}
	//если был задан id ошибки - отображаем
	if(ajaxErrorID != 0) {
		AjaxShowErrorMsg(ajaxErrorID);
	}
	//обнуляем id "прогресс-бара" и собщения с ошибкой
	ajaxPrgBarID = 0;
	ajaxErrorID  = 0;	
}
/*
  *** Пустая функция(сюда перенаправляется результат запроса, если истек таймаут) *****************************************************************************************
*/
function AjaxVoidResult() { 

}
