
function xmlHttp(fieldID,baseURL)
{
	this.request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
	this.formField = document.getElementById(fieldID);
	this.url = baseURL;
	this.loadingText = '';
	this.errorText = '';
	this.okText = '';
	this.StatusField = '';
}
xmlHttp.prototype.configure = function(baseURL, statusField,loadTxtOK,loadTXTErr,loadTXTProgress)
{
	this.url = baseURL;
	this.loadingText = loadTXTProgress;
	this.errorText = loadTXTErr;
	this.okText = loadTxtOK;
	this.StatusField = statusField;
}
xmlHttp.prototype.load = function (url)
{
	var req = this;
	// branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        this.request = new XMLHttpRequest();
        this.request.onreadystatechange = function(){changeState(req);};
        this.request.open("GET", url, true);
        this.request.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        this.request = new ActiveXObject("Microsoft.XMLHTTP");
        if (this.request) {
            this.request.onreadystatechange = function(){changeState(req);};
            this.request.open("GET", url, true);
            this.request.send();
        }
    }
}

xmlHttp.prototype.stat = function(n)
{
  switch (n) {
    case 0:
      return "не инициализирован";
    break;
      
    case 1: 
      return "загрузка...";
    break;
    
    case 2: 
      return "загружено";
    break;
    
    case 3: 
      return "обработка...";
    break;
      
    case 4: 
      return "готово";
    break;
    
    default:
      return "неизвестное состояние";  
  }  
}

changeState = function(obj)
{
	
	if (obj.statusField != '')
	{
		messageBox = document.getElementById(obj.StatusField);
		messageBox.innerText = obj.stat(obj.request.readyState);
		// ab = window.setTimeout("obj.request.abort();", 5000);
	}
	if (obj.request.readyState == 4) {
        	messageBox.innerHTML = obj.request.statusText;
        if (obj.request.status == 200) {
       		messageBox.innerHTML = obj.okText;
       		messageBox.style.display = 'none';
       	response = obj.request.responseXML.documentElement;
       	response.getElementsByTagName('result')[0].normalize();
	      method = response.getElementsByTagName('method')[0].firstChild.data;
	
	      result = response.getElementsByTagName('result')[0].firstChild.data;
	      eval(method + '(\'\', result)');
        } else {
            messageBox.innerHTML = obj.errorText + "\mSYSINFO:\nThere was a problem retrieving the XML data:\n" + obj.request.statusText;
        }
    }
else
	{
		messageBox.innerHTML = obj.stat(obj.request.readyState);
	}
}
