YAHOO.annuaireGrid = function(config) {

	var myDataSource = new YAHOO.util.DataSource(config.url);
	myDataSource.connMethodPost = true;
	myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
	myDataSource.connXhrMode = "queueRequests";
	myDataSource.responseSchema = {
		resultsList : "results",
		fields : config.dataFields
	};
	var tableConfig = {
		paginator : new YAHOO.widget.Paginator({
					rowsPerPage : 15,
					pageLinks: 5,
					alwaysVisible: false,
					rowsPerPageOptions : [ 10, 25, 50, 100 ],
					firstPageLinkLabel: '<< prem.',
					lastPageLinkLabel: 'dern. >>',
					previousPageLinkLabel: '< prec.',
					nextPageLinkLabel: 'suiv. >>',
					template : "{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} | Voir {RowsPerPageDropdown} par page."
				}),
		initialRequest : config.initialRequest,
		rowExpansionTemplate : config.rowExpansionTemplate
	};
	//tableConfig.initialRequest = config.initialRequest;
	var myDataTable = new YAHOO.rowExpander(config.resultContainer,
			config.columnDefs, myDataSource, tableConfig);

	var mySuccessHandler = function() {
		this.set("sortedBy", null);
		this.onDataReturnAppendRows.apply(this, arguments);
	};
	var myFailureHandler = function() {
		this.showTableMessage(YAHOO.widget.DataTable.MSG_ERROR,
				YAHOO.widget.DataTable.CLASS_ERROR);
		this.onDataReturnAppendRows.apply(this, arguments);
	};
	var callbackObj = {
		success : mySuccessHandler,
		failure : myFailureHandler,
		scope : myDataTable
	};

	myDataTable.subscribe('cellClickEvent',
			myDataTable.onEventToggleRowExpansion);

	return {
		oDS : myDataSource,
		oDT : myDataTable,
		oThis : this
	};

};
