function HttpRequest(url, target, style, asynch){
	var t = this;
	var p = HttpRequest.prototype;
	var request = null;
	if(!p.initialized){
		if(window.XMLHttpRequest){		
			p.getRequest = function(){
				var result = new XMLHttpRequest();
				return result;		
			}
		}
		else if(window.ActiveXObject){
			p.getRequest = function(){
				var result = null;
				try{
					result = new ActiveXObject('Msxml2.XMLHTTP');
				}
				catch(e){
					result = new ActiveXObject('Microsoft.XMLHTTP');
				}
				return result;		
			}
		}
		p.stateChange = function(request){
			switch(request.readyState){
				case 4:
					var doc = request.responseXML;
					if(t.styleSheet){
						t.doTransform(doc);
					}
					break;
				default:
					break;
			}
		}
		p.submit = function(){
			t.request = this.getRequest();
			t.request.onreadystatechange = function(){
				t.stateChange(t.request);
			}
			try{
				t.request.open('GET', this.url, this.asynch);
				t.request.send(null);
			}
			catch(e){
				alert(e);
			}
		}
		if(document.implementation && document.implementation.createDocument){
			p.doTransform = function(doc){
				var xsltProcessor = new XSLTProcessor();
				xsltProcessor.importStylesheet(this.styleSheet.documentElement);
				var resultDoc = xsltProcessor.transformToFragment(doc, document);
				if(this.target){
					var targetNode = this.domUtil.getElement(this.target);
					if(targetNode){
						targetNode.innerHTML = '';
						targetNode.appendChild(resultDoc);
					}
				}			
			}
		}
		else if(window.ActiveXObject){
			p.doTransform = function(doc){
				var transformer = new ActiveXObject('MSXML2.DOMDocument');
				transformer.async = false;
				transformer.load(style);
				var resultDoc = doc.transformNode(transformer);
				var t = this.domUtil.getElement(this.target);
				if(t){
					t.innerHTML = resultDoc;
				}
			}
		}			
		p.initialized = true;
	}
	t.url = url;
	t.target = target;
	t.style = style;
	t.styleSheet = null;
	t.transform = null;
	t.asynch = asynch;
	t.domUtil = new DomUtil();
	if(!t.asynch){
		t.asynch = false;
	}
	if(t.style && t.style!=''){
		var styleRequest = t.getRequest();
		styleRequest.open('GET', t.style, false);
		styleRequest.send(null);
		t.styleSheet = styleRequest.responseXML;
	}
	//t.request.onreadystatechange = function(){
	//	t.stateChange(t.request);
	//}
}
		