
	// Переменная для хранения ссылки на объект XMLHttpRequest
        var xmlHttp = createXmlHttpRequestObject();
        var divStatus = false, divStatusTimer = false;
 		var xmlQueryCounter = 0, xmlRetryCounter;
 		var xmlQueryTimer;
 		var varLogin, varPassword;



        // Функция, которая создает экземпляр XMLHttpRequest
	function createXmlHttpRequestObject(){
		// Переменная для хранения ссылки на объект XMLHttpRequest
		var xmlHttpVar;

                // Эта часть кода должна работать во всех браузерах, за исключением
                // IE6 и более поздних его версий
                try {
                	// Попытаемся создать объект XMLHttpRequest
                	xmlHttpVar = new XMLHttpRequest();
                }
                // Предполагается что используется IE6 или более поздняя его версия
                catch(e) {
                	var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                					"MSXML2.XMLHTTP.5.0",
                					"MSXML2.XMLHTTP.4.0",
                					"MSXML2.XMLHTTP.3.0",
                					"MSXML2.XMLHTTP",
                					"Microsoft.XMLHTTP");


                	// Теперь нуждо постараться создать объект наиболее поздней
                	// версии, пока одна из попыток не увенчается успехом
                	for (var i=0; i<XmlHttpVersions.length && !xmlHttpVar; i++) {
                		try {
		                	// Попытаемся создать объект XMLHttpRequest
                			xmlHttpVar = new ActiveXObject(XMLHttpVersions[i]);
                		}
                		catch (e) {} // Игнорируем возможные ошибки
                	}
                }
                // возвращаем объект, если объект не создан, то вернется false
                return xmlHttpVar;
	}

	// фцнкция, которая вызывается для запроса авторизации
	function doAuth() {
		if (!xmlHttp)
			return true
		else {
			try {				varLogin = document.forms["frmAuth"].elements["login"].value;
				varPassword = document.forms["frmAuth"].elements["password"].value;
				if (varLogin && varPassword) {		        	try {		        		doQuery();
				     	checkQuery();
					}
					catch(e) {
						xmlHttp.abort();
						abortQuery;
					}
					return false;
				} else {
					window.alert("Вы не заполнили поля формы!");
					return false;
				}
			}
			catch(e){				return true;			}
		}
	}

	function doQuery() {		var postData = "login=" + escape(varLogin) + "&password=" + escape(varPassword) + "&length=60";
		xmlHttp.open("POST", "forum.php?action=login&rss=1", true);
		xmlHttp.onreadystatechange = handleRequestStateChange;
		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlHttp.setRequestHeader("Content-Length", postData.length);
	 	xmlHttp.send(postData);

	   	divStatus = document.getElementById ("frmAuthStatus");
	   	divStatusTimer = document.getElementById ("frmAuthTimer");
     	if (divStatus) divStatus.style.display = "block";
     	xmlQueryCounter = 0;
	}

	function endQuery() {		clearTimeout(xmlQueryTimer);
		if (divStatus) divStatus.style.display = "none";
       	if (divStatusTimer) divStatusTimer.innerHTML = "";
	}

	function checkQuery() {		if (xmlHttp.readyState < 4) {
	     	if (divStatusTimer) {
	    		divStatusTimer.innerHTML = xmlQueryCounter + " сек";
		   	}
			xmlQueryTimer = setTimeout("checkQuery()", 1000);
			xmlQueryCounter++;
		} else {
        	if (divStatusTimer) divStatusTimer.innerHTML = "";
        	if (divStatus) divStatus.style.display = "none";
  		}
	}

        // Фцнкция обработки ответа HTTP
	function handleRequestStateChange () {
		if (xmlHttp.readyState == 4) {			endQuery();
        	try {
				if (xmlHttp.status == 200) {
					try {						checkResponse(xmlHttp.responseText);					}
					catch (e) {						xmlHttp.abort();
						abortQuery();
					}
				} else {
					xmlHttp.abort();
		 	    	abortQuery();
				}
			}
			catch (e) {				xmlHttp.abort();
				abortQuery();			}
		}
	}

	function checkResponse (response) {		switch (response) {			case "OK":
				var divAuth = document.getElementById ("frmAuth");
				var divUser = document.getElementById ("frmUser");
				try {					divAuth.style.display = "none";
					divUser.style.display = "block";
				}
				catch(e) {;}
				break;
			case "NO AUTH":
				window.alert("Неверные логин/пароль.");
				break;
		}

	}
