// création de l'objet
var AJAX =
{
	// création de l'objet de type XMLHttpRequest
	creationXHR : function()
	{
		return new XMLHttpRequest;
	},
	
	// envoi des données (objet, méthode d'envoi get ou post, url de la page, contenu sous forme de fichier texte ou xml)
	envoiDonnees : function(_objetXHR, _methodeEnvoi, _fichier, _typeContenu, _donneesEnvoyees)
	{
		// création de la requête
		_objetXHR.open(_methodeEnvoi, _fichier, true);
		
		// test du type de contenu
		switch(_typeContenu)
		{
			case 'txt':
			_typeContenu = 'text-plain';
			break;
			
			case 'xml':
			_typeContenu = 'text/xml';
			break;
			
			case 'json':
			_typeContenu = 'application/json';
			break;
			
			// forme url
			case 'url':
			_typeContenu = 'application/x-www-form-urlencoded';
			break;
		}
		
		// type de contenu
		_objetXHR.setRequestHeader('Content-type', _typeContenu);
		
		// exécution de la requête
		// test de la méthode d'envoi
		switch(_methodeEnvoi)
		{
			case 'get':
			_objetXHR.send(null);
			break;
			
			case 'post':
			_objetXHR.send(_donneesEnvoyees);
			break;			
		}
		
	},
	
	// réception des données (objet, mode de réception (texte ou xml), fonction qui réceptionne les données)
	receptionDonnees : function (_objetXHR, _modeReception, _fonctionReception)
	{
		_objetXHR.onreadystatechange = function()
		{
			// readyState = 4, veut dire que le requête est terminée et que la réponse est disponible
			if (_objetXHR.readyState == 4)
			{
				// status = 200, le fichier existe
				if(_objetXHR.status == 200)
				{
					// test du mode de réception
					switch(_modeReception)
					{
						case 'txt':
						_fonctionReception(_objetXHR.responseText);
						break;
						
						case 'xml':
						_fonctionReception(_objetXHR.responseXML);
						break;
						
						case 'json':
						/* 
						une réponse en JSON doit être analysée en JS avec la fonction eval
						
						*/
						// eval("(JSON)")
						
						_fonctionReception(eval('(' + _objetXHR.responseText + ')'));
						break;
						
					}
				}
			}
		}
	}
	
	
	
}
