/* XML class. Copyright by ADenis (adeniss@ukr.net) */

var XMLsessions = new Array();

function XML(){
		
	var request = null;
	
	this.onLoad = null;
	this.onError = null;
	
	this.listener = null;
	this.nodes = null;
	this.text = "";
	this.state = -1;
	this.statusCode = -1;
	this.statusText = "";	
	
	this.id = 0;	
	this.id = XMLsessions.length;
	
	this.json = false;
	
	XMLsessions.push(this);
		
	this.create = function(){
		var object = null;
		if(window.ActiveXObject){
			object = new ActiveXObject("Microsoft.XMLHTTP");
		}
		else if(window.XMLHttpRequest){
			object = new XMLHttpRequest();
		}
		return object;
	}
	
	this.load = function(url){
		request = this.create();
		var funct = "XMLsessions["+this.id+"].onStateChange()";
		request.onreadystatechange = new Function(funct);
		//var params = ""
		var params = url.slice(url.indexOf("?")+1);
		url = url.slice(0, url.indexOf("?"));
		
		request.open("POST", url, true);		
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		
		if(this.json) {
			request.setRequestHeader("Content-Length", params.length);
		}
		
		request.setRequestHeader("Accept-Charset", "UTF-8");
		request.setRequestHeader("Cache-Control", "UTF-8");

		request.send(params);

	}
	
	this.onStateChange = function (){
		this.state = request.readyState;
		
		if(this.state == 4){
			
			this.statusCode = request.status;
			this.statusText = request.statusText;
			
			//alert("getAllResponseHeaders "+request.getAllResponseHeaders()+"\n statusCode "+ this.statusCode+"\n responseText "+request.responseText);
			
			if(this.statusCode == 200){				
				this.nodes = request.responseXML;
				this.text = request.responseText;

				if(this.onLoad){
					this.onLoad.call(this.listener, this.nodes, this.text, this.statusText);
				}
			}else{
				if(this.onError)
					this.onError.call(this.listener, this.statusText);
			}
		}
	}
}