var xmlHttp = createXmlHttpRequestObject();

var serverAddress = "validate.php";

var showErrors = true;

var cache = new Array();

//tworzy obiekt XMLHttpRequest
function createXmlHttpRequestObject()
{
  var xmlHttp;
	
  try
  {
    xmlHttp = new XMLHttpRequest();	
  }		
  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 && !xmlHttp; i++)
	{
	  try
	  {
	    xmlHttp= new ActiveObject(XmlHttpVersions[i]);	
	  }	
	  catch (e) {}
	}
 }	
 //if(!xmlHttp)
   //displayError("Błšd podczas tworzenia obiektu XMLHttpVersions.");
 //else
   return xmlHttp;	
}		

//wyswietla komunikat o bledzie
function displayError($message)
{
  if(showErrors)
  {
    showErrors = false;
	 alert("Wystąpił błąd :\n" + $message);	
	 setTimeout("validate();", 10000);
  }	
}

//weryfikacja dowolnego pola
function validate(inputValue, fieldID)
{ 		  
  // jeśli obiekt nie jest pusty
  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();
		  //displayError(cacheEntry);	
		  xmlHttp.open("GET", serverAddress+"?"+cacheEntry, true);	
		  xmlHttp.setRequestHeader("Content-Type", "application/x-www-from-urlencoded");
		  xmlHttp.onreadystatechange = handleRequestStateChange;
		  xmlHttp.send(null);					
		}
	 }
	 catch(e)
	 { displayError("asd");
	   displayError(e.toString());
	 }
  }	
}

//obsługuje odpowiedz HTTP
function handleRequestStateChange()
{ 
  if(xmlHttp.readyState==4)
  { 
    if(xmlHttp.status == 200)
	 {
	   try
		{ 
		  //displayError("Kamil");
		  readResponse();
		}
		catch(e)
		{
		  displayError(e.toString());
		}
	 }	
	 else
	 {  //czasemwyskakiwał błąd podczas rej.
	   //displayError("tutajjj");
	   //displayError(xmlHttp.statusText);
	 } 
  }	
}

//czyta odpowiedź z serwera
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);
  responseXml = xmlHttp.responseXML; //zmien na RESPONSE XML oraz nazwe serwera !!!!
  
  //displayError(responseXml);	
  xmlDoc= responseXml.documentElement;
  result = xmlDoc.getElementsByTagName("result")[0].firstChild.data;
  fieldID = xmlDoc.getElementsByTagName("fieldid")[0].firstChild.data;
  	//displayError(result);
  message = document.getElementById(fieldID+"s");
  if(fieldID!='pasp_p')
    message1= document.getElementById("hasloxs");	
  message.className = (result == "0" ? "error" : "hidden");
  message1.className = "hidden";
		
  setTimeout("validate();", 500);		  					
}

//ustawia kursor w pierwszym polu
function setFocus()
{
  //document.getElementById("imie").focus();
}
