examples/webconsole/resources/js/jquery/jquery.dataTables.js
function _fnGetUniqueThs ( oSettings, nHeader, aLayout )
		{
			var aReturn = [];
			if ( !aLayout )
			{
				aLayout = oSettings.aoHeader;
				if ( nHeader )
				{
					aLayout = [];
					_fnDetectHeader( aLayout, nHeader );
				}
			}
		
			for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )
			{
				for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )
				{
					if ( aLayout[i][j].unique && 
						 (!aReturn[j] || !oSettings.bSortCellsTop) )
					{
						aReturn[j] = aLayout[i][j].cell;
					}
				}
			}
			
			return aReturn;
		}
function _fnGetUniqueThs ( oSettings, nHeader, aLayout )
		{
			var aReturn = [];
			if ( !aLayout )
			{
				aLayout = oSettings.aoHeader;
				if ( nHeader )
				{
					aLayout = [];
					_fnDetectHeader( aLayout, nHeader );
				}
			}
		
			for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )
			{
				for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )
				{
					if ( aLayout[i][j].unique && 
						 (!aReturn[j] || !oSettings.bSortCellsTop) )
					{
						aReturn[j] = aLayout[i][j].cell;
					}
				}
			}
			
			return aReturn;
		}
function _fnGetUniqueThs ( oSettings , nHeader , aLayout ) { var aReturn = [ ] ; if ( ! aLayout ) { aLayout = oSettings . aoHeader ; if ( nHeader ) { aLayout = [ ] ; _fnDetectHeader ( aLayout , nHeader ) ; } } for ( var i = 0 , iLen = aLayout . length ; i < iLen ; i ++ ) { for ( var j = 0 , jLen = aLayout [ i ] . length ; j < jLen ; j ++ ) { if ( aLayout [ i ] [ j ] . unique && ( ! aReturn [ j ] || ! oSettings . bSortCellsTop ) ) { aReturn [ j ] = aLayout [ i ] [ j ] . cell ; } } } return aReturn ; }
Get an array of unique th elements, one for each column
@param {object} oSettings dataTables settings object
@param {node} nHeader automatically detect the layout from this node - optional
@param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional
@returns array {node} aReturn list of unique ths
@memberof DataTable#oApi
Get an array of unique th elements one for each column