﻿/*
* Function: $().dataTable().fnGetTd
* Purpose:  Get a TD node from a row, taking into account column visibility
* Returns:  node: - TD element
* Inputs:   mixed:mTr - 
*             node: - TR element to get the TD child from
*             int: - aoData index
*           int:iTd - TD node index to get
*           bool:bVisOnly - optional - if true then only visible columns are counted for the iTd
*             parameter. If not given or false then both hidden and visible columns will be used
*/
$.fn.dataTableExt.oApi.fnGetTd = function (oSettings, mTr, iTd, bVisOnly) {
    /* Take either a TR node or aoData index as the mTr property */
    var iRow = (typeof mTr == 'object') ?
		oSettings.oApi._fnNodeToDataIndex(oSettings, mTr) : mTr;

    if (typeof bVisOnly == 'undefined' && !bVisOnly) {
        /* Looking at both visible and hidden TD elements - convert to visible index, if not present
        * then it must be hidden. Return as appropriate
        */
        var iCalcVis = oSettings.oApi._fnColumnIndexToVisible(oSettings, iTd);
        if (iCalcVis !== null) {
            return oSettings.aoData[iRow].nTr.getElementsByTagName('td')[iCalcVis];
        }
        else {
            return oSettings.aoData[iRow]._anHidden[iTd];
        }
    }
    else {
        /* Only looking at visible TD elements, so just use getElements... */
        return oSettings.aoData[iRow].nTr.getElementsByTagName('td')[iTd];
    }
}


