MIXAD.tool.SimpleSearch = function (searchPageURI, searchResultTagName, searchDoneCallBack)
{
	// URI de la page de recherche sur le serveur
	this._searchPageURI = searchPageURI;

	// nom de l'element pere de la liste de resultats retournee par le serveur
	this._searchResultTagName = searchResultTagName;
	
	// procedure de callback appelee une fois la recherche terminee
	this._searchDoneCallBack = searchDoneCallBack;

	// tableau pour stocker toutes les donnees attachees a un element de la liste de resultats
	this._resultData = null;

	// variable de stockage de la reponse brute renvoyee par le serveur
	this._reponseText = null;

	// proprietes de la classe mere
	this._pageURI = searchPageURI;
	this._requestProcessCallBack = this._processSearchResult;

	this._init();
}

// on herite de la classe XMLHttpRequest
MIXAD.tool.SimpleSearch.prototype = new MIXAD.tool.XMLHttpRequest;


/**************************************************************************************
***	METHODE PUBLIQUE
***************************************************************************************/
MIXAD.tool.SimpleSearch.prototype.launchSearch = function ()
{
	this._getDataFromServer();
}
MIXAD.tool.SimpleSearch.prototype.getResultData = function ()
{
	return this._resultData;
}
MIXAD.tool.SimpleSearch.prototype.getResponseText = function ()
{
	return this._responseText;
}


/**************************************************************************************
***	METHODE PRIVEE
***************************************************************************************/
MIXAD.tool.SimpleSearch.prototype._processSearchResult = function ()
{
	if (this._httpObject.readyState == 4)
	{	
		var xmlDoc = MIXAD.common.getXmlDocumentFromRequest(this._httpObject);
		var xmlData = xmlDoc.getElementsByTagName(this._searchResultTagName);

		// initialisation du tableau contenant les donnees attachees a un element de la liste de resultats
		this._resultData = new Array(xmlData.length);

		// reponse brute au format texte renvoyee par le serveur
		this._responseText = this._httpObject.responseText;

		for (var i = 0; i < xmlData.length; i++)
		{		
			// donnees associees a l'element de la liste de resultats
			var childList = xmlData[i].childNodes;

			// tableau de stockage des donnees
			this._resultData[i] = new Array(childList.length);

			// recuperation des donnees
			for (var j = 0; j < childList.length; j++)
			{
				var childName = childList[j].nodeName;
				if (childName != "#text")
				{
					if (xmlData[i].getElementsByTagName(childName)[0].firstChild)
					{
						var childValue = xmlData[i].getElementsByTagName(childName)[0].firstChild.nodeValue;
						this._resultData[i][childName] = childValue;
					}
				}
			}

		}

		this._httpObject.abort();

		if (this._searchDoneCallBack != undefined)
		{
			this._searchDoneCallBack.call();
		}
	}
}
