function filterTable(term, tableId)
{
    table = document.getElementById(tableId);
    var terms = term.value.toLowerCase().split(" ");
    // delete old 'Total' row
    table.deleteRow(table.rows.length - 1);

    var cellData = new Array(table.rows[0].cells.length);

    cellData[0] = 'Total';

	// initialize array
    for (var c = 1; c < table.rows[0].cells.length; c++)
    {
         cellData[c] = 0;
    }

    for (var r = 1; r < table.rows.length; r++)
    {
        var display = '';
 
        for (var i = 0; i < terms.length; i++)
        {
            if (table.rows[r].innerHTML.replace(/<[^>]+>/g, "").toLowerCase().indexOf(terms[i]) < 0)
            {
                display = 'none';
            }

		}

		if (display != 'none')
		{

 	        for (var c = 1; c < table.rows[r].cells.length; c++)
           	{
				if (table.rows[r].cells[c].innerHTML != '-')
				{
					nodeValue = findTextNode(table.rows[r].cells[c]);

					intValue = "";
					nodeArray = nodeValue.split(',');
					
					if (nodeArray.length > 0)
					{
						for (var i = 0; i < nodeArray.length; i++)
						{
							intValue += nodeArray[i] 
						}
						nodeValue = intValue
					}

					cellData[c] += parseInt(nodeValue);
				}

         	}
		}
        table.rows[r].style.display = display; 
	}    

	// add a row at the very end 
	var newRow = table.insertRow(-1);        
	var users = 0;
	var cell = newRow.insertCell(0);             
	cell.innerHTML = cellData[0];

    for (var j = 1; j < cellData.length; j++)
    {
        var cell = newRow.insertCell(j);
		if (cellData[j])
			if (j < cellData.length - 1)
				cell.innerHTML = Comma(cellData[j]);
		else
			cell.innerHTML = "";

        if (j == cellData.length - 1)
		{
			if (cellData.length == 8)
				users = cellData[cellData.length - 5];
			else if (cellData.length == 7)
				users = cellData[cellData.length - 4];
			else if (cellData.length == 6)
				users = cellData[cellData.length - 3];

			if (users == 0 || null == users)
				cell.innerHTML = "";
			else
				cell.innerHTML  = (parseFloat(cellData[cellData.length - 2])/parseInt(users)).toFixed(2);
			
		}
    }	    
}

function Comma(number) {
	number = '' + number;
	if (number.length > 3) {
		var mod = number.length % 3;
		var output = (mod > 0 ? (number.substring(0,mod)) : '');

		for (i=0 ; i < Math.floor(number.length / 3); i++) {
			if ((mod == 0) && (i == 0))
				output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
			else
				output+= ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
		}
		return (output);
	}
	else return number;
}

function findTextNode(el)
{
	if(el.nodeType == 3)
    {
		return el.nodeValue;
	}

	if(el.childNodes.length > 0)
	{
		return findTextNode(el.childNodes[0]);
	}
    else
    {
		return -1;
    }
}




