var xmlHttp=CreateXmlHttpRequestObject();
var ServerAdress="validate.php";
var ShowErrors=true;
var Cache=new Array();
function CreateXmlHttpRequestObject()
{var xmlHttp;
	try
	{xmlHttp=new XMLHttpRequest();}
	catch(e)
	{
		var xmlHttpVersion=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<xmlHttpVersion.length && !xmlHttp; i++)
		{
			try
			{
				xmlHttp=new ActiveXObject(xmlHttpVersion[i]);
			}
			catch(e){}
		}
		
	}
if(!xmlHttp) return false;
else return  xmlHttp;
}
function DisplayErrors($message)
{
	if(ShowErrors)
	{
		ShowErrors=false;
		alert("Обнаружена ошибка \n"+$message);
		setTimeout("validate();",10000);
	}
}
function validate(inputValue,fieldID)
{
	if(xmlHttp)
	{
		if(fieldID)
		{
			inputValue=encodeURIComponent(inputValue);
			fieldID=encodeURIComponent(fieldID);
			Cache.push("inputValue="+inputValue+"&fieldID="+fieldID);
		}
		//пытаемся установить соединение с сервером
		try
		{
			if((xmlHttp.readyState==4 || xmlHttp.readyState==0)&&Cache.length>0)
			{
				var CacheEntry=Cache.shift();
				xmlHttp.open("POST",ServerAdress,true);
				xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
				xmlHttp.onreadystatechange=HandleRequestStateChange;
				xmlHttp.send(CacheEntry);
			}
			
		}
		catch(e)
		{
			DisplayErrors(e.toString());
		}
	}
	else alert("Не удалось создать элемент XMLHTTP");
}
function HandleRequestStateChange()
{
	if(xmlHttp.readyState==4)
    {
		if(xmlHttp.status==200)
		{
		 //try
		 //{
			 ReadResponse();
		 //}
		 //catch(e)
		// {
		//	 DisplayErrors(e.toString());
		 //}
		}
		else DisplayErrors(XmlHttp.statusText);
    }
}
function ReadResponse()
{  //проверяем не было ли ошибки
	var response=xmlHttp.responseText;
	if(response.indexOf("ERRNO")>=0||response.indexOf("error:")>=0||response.length==0)
	 throw(response.length==0?"Ошибка сервера при получении данных":response); 
	var responseXml=xmlHttp.responseXML;
	    xmlDoc=responseXml.documentElement;
	    result=xmlDoc.getElementsByTagName('result')[0].firstChild.data;
	    fieldID=xmlDoc.getElementsByTagName('fieldID')[0].firstChild.data;
		message=document.getElementById(fieldID);
		message.className=(result=="0")?"error":"hidden";
		setTimeout("validate();",500);
}