function httpRequest() {
	if (window.XMLHttpRequest) {
		//not for IE
		obj = new XMLHttpRequest();
		return obj;
	} else if (window.ActiveXObject) {
		//for IE
		obj = new ActiveXObject("Microsoft.XMLHTTP");
		return obj;
		if (!obj) {
			obj = new ActiveXObject("Msxml2.XMLHTTP");
			return obj;
		}
	}
}

RequestObj = httpRequest();

var ValidateUrl = "validate.php";
var AppInfoUrl 	= "ajax_app_info.php";
var cache = new Array();

// Validate Field
function ValidateField(fieldId, fieldValue, otherFieldValue) {
	if(fieldId) {
		cache.push("id="+encodeURIComponent(fieldId)+"&value="+encodeURIComponent(fieldValue)+"&other_value="+encodeURIComponent(otherFieldValue));
	}
	
	if((4 == RequestObj.readyState || 0 == RequestObj.readyState) && cache.length > 0) {
		var postString = cache.shift();
		RequestObj.open("POST",ValidateUrl,true);
		RequestObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		RequestObj.onreadystatechange = ValidateResponse;
		RequestObj.send(postString);
	}
}

function ValidateResponse() {
	
	var status;
	
	if ( 4 == RequestObj.readyState ) {
		
		status = RequestObj.status;
		
		switch (status) {
			
			case 200:
				Validate();
				break;
				
			case 400:
				alert('Incorrect demand');
				break;
				
			case 500:
				alert('Error on the server');
				break;
				
			case 503:
				var time = RequestObj.getResponseHeader('Retry-After')*1000;
				alert('Server is overloaded. Retype query for: '+time+' sec');
				setTimeout(ValidateRequest(),time);
				break;
			
			default:
				alert('Erroneous answer of the server');
				break;
				
		}
	}
}

function Validate() {
	XmlResponse = RequestObj.responseXML;
	XmlDoc = XmlResponse.documentElement;
	var id = XmlDoc.getElementsByTagName('fieldid')[0].firstChild.data;
	var text = XmlDoc.getElementsByTagName('errortext')[0].firstChild.data;
	
	if(text!='1' && text!='0') document.getElementById(id).innerHTML='<img src="images/apf_er.gif" align="absmiddle">';
	else if(text=='1') document.getElementById(id).innerHTML='<img src="images/apf_ok.gif" align="absmiddle">';
	else document.getElementById(id).innerHTML='';
	
	setTimeout("ValidateField();", 500)
}

// appinfo functions
function sendApp(){
	value = document.getElementById('dba').value
	if(value=='')
	{
		document.getElementById('app_info').style.display = 'none';
	}
	else
	{
		AppDataRequest(AppInfoUrl+'?id='+value);
	}
}

function AppDataRequest(Url){
	AppRequestObj = httpRequest();
	AppRequestObj.open("GET",Url,true);
	AppRequestObj.onreadystatechange = AppResponse;
	AppRequestObj.send(null);
}

function AppResponse() {
	
	var status;
	
	if ( 4 == AppRequestObj.readyState ) {
		
		status = AppRequestObj.status;
		
		switch (status) {
			
			case 200:
				ViewAppResponse();
				break;
				
			case 400:
				alert('Incorrect demand');
				break;
				
			case 500:
				alert('Error on the server');
				break;
				
			case 503:
				var time = AppRequestObj.getResponseHeader('Retry-After')*1000;
				alert('Server is overloaded. Retype query for: '+time+' sec');
				setTimeout(sendApp(),time);
				break;
				
			default:
				alert('Erroneous answer of the server');
				break;
		}
	}
}

function ViewAppResponse() {
	Response = AppRequestObj.responseText;
	if(Response!='error') {
		document.getElementById('app_info').innerHTML=Response;
		document.getElementById('app_info').style.display = 'block';
	} else {
		document.getElementById('app_info').style.display = 'none';
	}
}

