

var Ajax = {

	
	init: function() {
		
		
		// creo l'oggetto dei listeners
		
		Ajax.listeners = new Object();
		Ajax.listeners.loadStart = new Array();
		Ajax.listeners.loadComplete = new Array();
		
		
	},
	
	
	getObject: function() {
	
		return Ajax.ajaxObj;
	
	},
	
	
	
	/**
	* gestione dei listeners
	*/
	
	addEventListener: function( event, listener ) {
	
		Ajax.listeners[event].push(listener);
	
	},
	
	notifyLoadStart: function() {
		
		for ( var src = 0 ; src < Ajax.listeners.loadStart.length ; src ++ ) {
			
			Ajax.listeners.loadComplete[src].ajaxLoadStart();
		
		}
	
	},
	
	notifyLoadComplete: function(content) {
		
		for ( var src = 0 ; src < Ajax.listeners.loadComplete.length ; src ++ ) {
			
			Ajax.listeners.loadComplete[src].ajaxLoadComplete(content);
		
		}
	
	},
	
	
	
	/**
	* METHODS
	*/
	
	load: function( method, url ) {
		
		
		
		// inizializzo l'oggetto per la richiesta
		
		if( navigator.appName == "Microsoft Internet Explorer" ) {
		
			Ajax.ajaxObj = new ActiveXObject("Microsoft.XMLHTTP");
		
		} else {
			
			Ajax.ajaxObj = new XMLHttpRequest();
		
		}
		
		
		Ajax.getObject().onreadystatechange = Ajax.handleResponse;
		Ajax.getObject().open( method, url );
		Ajax.getObject().setRequestHeader("connection", "close");
		Ajax.getObject().send(null);
	
	},
	
	
	
	/**
	* EVENTS
	*/
	
	handleResponse: function() {
		
		switch (Ajax.getObject().readyState) {
		
			case 0 : // Uninitialized
				
				
				break;
		
			case 1 : // Open
				
				Ajax.notifyLoadStart();
				break;
		
			case 2 : // Sent
				
				
				break;
		
			case 3 : // Receiving
				
				
				break;
		
			case 4 : // Loaded
				
				Ajax.notifyLoadComplete(Ajax.getObject().responseText);
				break;
		
		}
	
	}
	
	
	
	

}