//<![CDATA[
function HttpRequest(url, fields, values, handleRequest){
	this.url = url;
	this.fields = fields;
	this.values = values;
	this.parameters = '';
	this.request = null;

	HttpRequest.prototype.makeRequest = function makeRequest(parameters){
		this.request = null;
		
		if(window.XMLHttpRequest){ // Mozilla, Safari,...
			this.request = new XMLHttpRequest();
	        if(this.request.overrideMimeType){
	        	this.request.overrideMimeType('text/xml');
            }
        }else if(window.ActiveXObject){ // IE 5, 6
            try{
                this.request = new ActiveXObject("Msxml2.XMLHTTP");
            }catch(e){
                try{
                    this.request = new ActiveXObject('Microsoft.XMLHTTP');
                }catch(e){
                	alert('AJAX-ERROR: Can\'t do create ActiveXObject instance');
                	return false;
                }
            }
        }
	
        if(!this.request){
            alert('AJAX-ERROR: Can\'t do create Ajax Object instance');
            return false;
        }
	       
		if(this.fields != null && this.values != null){
			if(this.fields.length != this.values.length){
			    alert('AJAX-ERROR: Number of fields distinct of number of values');
		        return false;
			}
			
			for(var i = 0; i < this.fields.length; i++){
				if(this.parameters == ''){
					this.parameters = this.fields[i] + '=' + escape(this.values[i]);
				}else{
					this.parameters += '&' + this.fields[i] + '=' + escape(this.values[i]);
				}
			}
		}
		
		if(typeof(parameters) != 'undefined'){
			if(this.parameters == ''){
				this.parameters = parameters;
			}else{
				this.parameters += '&' + parameters;
			}								
		}
        	
		try{
	        this.request.onreadystatechange = handleRequest;		        
	        this.request.open('POST', url, true);
	        
        	this.request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	        this.request.setRequestHeader('Accept-Charset', 'iso-8859-1');
			this.request.setRequestHeader('Content-length', this.parameters.length);
			this.request.setRequestHeader('Connection', 'close');
			
        	this.request.send(this.parameters);
        }catch(e){
        	alert('AJAX-ERROR: Can\'t send requests');
        	return false;
        }
	}
	
	HttpRequest.prototype.getStatus = function getStatus(){
		return this.request.status;
	}
	
	HttpRequest.prototype.getReadyState = function getReadyState(){
		return this.request.readyState;
	}

	HttpRequest.prototype.getResponseText = function getResponseText(){
		try{			
			return this.request.responseText;
		}catch(e){
			return;
		}
	}
	
	HttpRequest.prototype.getResponseXML = function getResponseXML(){
		try{			
			return this.request.responseXML;
		}catch(e){
			return;
		}
	}
}
//]]>
