//_______________________________________________________________________
function XRequest(despatchUrl_str,postXML_str){
	
	var httpType_str		= 'POST';
	
	var self				= this;
	
	var broadcaster			= new Broadcaster(this);
	broadcaster.createEventType('load');
	
	// construct request
	var request_xhr			= new XMLHttpRequest();
	request_xhr.open(httpType_str,despatchUrl_str,true);
	request_xhr.onreadystatechange = handleRequestStateChange;
	
	this.__defineGetter__('data_xdoc',function(){return request_xhr.responseXML;});
	
	//---------------------------------------------------------------
	function handleRequestStateChange(){
		
		// abort if object not yet ready
		if(4==request_xhr.readyState){									// need to add a handler for delayed/indefinite return
			if(request_xhr.responseXML){
				request_xhr.responseXML.normalize();
				broadcaster.triggerEvent('load',self);
			}else{
				throw new Error('Request failed to load');
			}
		}
	};
	//_______________________________________________________________
	this.despatch = function(){
		
		request_xhr.send(postXML_str);
	};
};	//_______________________________________________________________
