// переменная для хранения ссылки на объект XMLHttpRequest\
// alert('*****');
function setFocus()
    {
    	document.getElementById("txtUsername").focus();
    }

var xmlHttp = createXMLHttpRequestObject();
// переменная для хранения адресса удаленного сервера
//	var serverAddress = "http://turportal.pimentos.com.ua/test/validate.php";
	//var serverAddress = "validate.php";
// если установлено значение true, выводиться подробное сообщение об ошибках
	var showErrors = false;
// иницилизировать кэш запросов
	var cache = new Array();
// создает экземпляр объекта  XMLHttpRequest
	function  createXMLHttpRequestObject()
	{
		//пенеменная для хранения ссылки на объект XMLHttpRequest
		var  xmlHttp;
				// эта часть кода должна работать во всех браузерах, кроме IE6
		try
		{
			//попытка создать объест     XMLHttpRequest
			xmlHttp = new  XMLHttpRequest();
		}
		catch(e)
		{
			// предполагаеться что используеться IE6 или старые версии
			var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
											"MSXML2.XMLHTTP.5.0",
											"MSXML2.XMLHTTP.4.0",
											"MSXML2.XMLHTTP.3.0",
											"MSXML2.XMLHTTP",
											"Microsoft.XMLHTTP");
			// попробывать все возможные prog id
			// пока какая-либо попытка не увенчаеться успехом
			for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
			{
				try
				{
					// попытка создать объект XMLHttpRequest

					xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
				}
				catch (e) {} // игнорировать возможные ошибки
			}
		}
			// вернуть созданый объект или вывести сообщение об ошибке
			if (!xmlHttp)
				alert("ошибка создания объекта XMLHttpRequest.");
			else
				return   xmlHttp;

	}

	// эта функция выводит сообщение об ошибке
	function displayError($message)
	{
		//игнорировать ошибку если в show errors находиться false
		if (showErrors)
		{
			// отключить вывод сообщений об ошибке
			showErrors = false;
			// вывод сообщений об ошибке
			alert("Обнаружена ошибка: \n" + $message);
			// повторнаяпроверка не ранее чем через 10 с
			setTimeout("validate();", 10000);
		}
	}
    // эта ф-ция выпоняет проверку любого поля формы
 function validate(inputValue, serverAddress, funkc)
    {
    	// проодолжить если в xmlHttp не пустая ссылка
    	if (xmlHttp)
    	{
    		// если был принят не пустой аргумент помещаем его в кеш в виде
    		// строки запроса, который будет послан серверу для проверки
    		if (inputValue)
    		{
    			// преобразовать значение в форму, которая может безопасно быть включена
    			// в строку запроса http
    			//inputValue = encodeURIComponent(inputValue);
    			//fieldID = encodeURIComponent(fieldID);
						//alert(inputValue)
    			// добавить значение в очередь
    			cache.push(inputValue);
    		}
    		//  попытаться установить соединени е с сервером
    		try
    		{
    			// продолжать если объект XMLHttpRequest не занят
    			// и кеш не пуст

    			if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
    				&& cache.length>0)
    			{
    				// извлечь новый набор параметров из кеша
    				var cacheEntry = cache.shift();
                    //alert(serverAddress);
    				// послать запрос серверу для проверки извлеченных даных
    				xmlHttp.open("POST",serverAddress, true);
    				xmlHttp.setRequestHeader("Content-Type",
    										"application/x-www-form-urlencoded");
					window.Funkc= funkc;
    				xmlHttp.onreadystatechange = handleRequestStateChange;

        			//alert(cacheEntry);
    				xmlHttp.send(cacheEntry);

    			}
    		}
    		catch (e)
    		{
    			// вывести сообщение об ошибке при неудачной попытке
    			// установить соединение с сервером
    			displayError(e.toString());
    		}
    	}
    }
     // эта функция обслуживает ответы http
   function handleRequestStateChange()
{
  // when readyState is 4, we read the server response
  if (xmlHttp.readyState == 4)
  	{
    // continue only if HTTP status is "OK"
    if (xmlHttp.status == 200)
    {
      try
      {
        // read the response from the server
        readResponse();
      }
      catch(e)

      {
        // display error message
        displayError(e.toString());
      }
    }
    else
    {
      // display error message
      displayError(xmlHttp.statusText);
    }
  }
}

    // читает  ответ сервер
    function  readResponse()
    {

    	// получить ответ от сервера
    	var response = xmlHttp.responseText;

    	// ошибка сервера?
    	if (response.indexOf("ERRNO")>=0
    			|| response.indexOf("error:")>= 0
    			|| response.length == 0)
    		throw(response.length == 0 ? "Server error." : response);
    	// получить ответ в формате XML


    	responseXml = xmlHttp.responseXML

    	// получить ссылку на корневой элемент
    	xmlDoc = responseXml.documentElement;
           
    	//if (!xmlDoc) {alert('No xmlDoc'); exit;}

    	eval(window.Funkc+'(xmlDoc)')
    	// вызвать validate еще раз на случай если кеш не пуст
    	setTimeout("validate();", 500);
    }


