

var AjaxRequest = Class.create( EventDispatcher, {

	
	requestId : undefined,
    inUse : false,
	request : undefined,
	
	
	initialize : function(requestId){
	
	  this.requestId = requestId;
	  
	  try{
	  	
	  	this.types = {
	  	    
	  	    "loading" : new Array(),
	  	    "loaded"  : new Array(),
	  	    "interactive" : new Array(),
	  	    "complete" : new Array()
	  	
	    }
	  	
		var agent = window.navigator.userAgent;
		if( agent.indexOf( "Opera" ) > -1 )
		 this.request = new XMLHttpRequest();
		else if( agent.indexOf( "MSIE" ) > -1 )
		 this.request = new ActiveXObject("Microsoft.XMLHTTP");
		else
		 this.request = new XMLHttpRequest();
		 
		 
		var req = this;
		//this.addEventListener( "complete", function(event){req.inUse=false;}, false );

		this.request.onreadystatechange = function(){
		
		  var state = req.request.readyState;
		  
		  switch( state ){
		  
		  	case 1: req.dispatchEvent( "loading", new AjaxRequestEvent( req.request) );break;	
		  	case 2: req.dispatchEvent( "loaded", new AjaxRequestEvent( req.request) );break;
		  	case 3: req.dispatchEvent( "interactive", new AjaxRequestEvent( req.request) );break;
		  	case 4: req.dispatchEvent( "complete", req.request );break;
		  	default: console.info( "failed to capture state" );break;
		  	
		  }
		   
		}

	  }catch( e ){
	  	
	  	console.error( e );
	  	this.request = undefined;
	  }
	
	},
	
	open : function( method, url ){
	
      this.inUse = true;
	  this.request.open( method, url );
	  
    },

    
    send : function( body ){
		
    	this.inUse = true;
		this.request.send( body );
    }
	
	

})
