//TABLE Column index defs, 0 based
var DESC_COL = 0;
var W_4_5_COL = 1;
var W_2_3_COL = 2;
var W_1_COL = 3;
var OVERTIME_COL = 4;
var HOLIDAY_COL = 5;
var EXTRA_COL = 6;

//MAX columns in a table
var MAX_COLS = 7;
var MAX_TABLES = 2;

//style to display or show a cell
//var SHOW_STYLE = "block";
var SHOW_STYLE = "";
var HIDE_STYLE = "none";

//ALL options, column indexs to display
var ALL_RATES_COLS = [DESC_COL, W_4_5_COL, W_2_3_COL, W_1_COL, OVERTIME_COL, HOLIDAY_COL, EXTRA_COL];
var REGULAR_RATES_COLS = [DESC_COL, W_4_5_COL, W_2_3_COL, W_1_COL, EXTRA_COL];
var OVERTIME_RATES_COLS = [DESC_COL, OVERTIME_COL, EXTRA_COL];
var HOLIDAY_RATES_COLS = [DESC_COL, HOLIDAY_COL, EXTRA_COL];

//for each option, cache display values for each possible column
var ALL_RATES_DISP = buildShowArray(ALL_RATES_COLS);
var REGULAR_RATES_DISP = buildShowArray(REGULAR_RATES_COLS);
var OVERTIME_RATES_DISP = buildShowArray(OVERTIME_RATES_COLS);
var HOLIDAY_RATES_DISP = buildShowArray(HOLIDAY_RATES_COLS);

var sharedTables = null;

function setSharedTables(a_Tables)
{
	//alert("setSharedTables: sharedTables="+sharedTables+" a_Tables="+a_Tables);
	sharedTables = a_Tables;
}

function getTables()
{
	//alert("getTables: sharedTables="+sharedTables);
	
	if (sharedTables)
	{
		//alert("getTables: cached sharedTables="+sharedTables+" len="+sharedTables.length);
		return sharedTables;
	}
	else
	{
		var tables = document.getElementsByTagName("table");
		//alert("getTables: looked up tables="+tables+" len="+tables.length); 
		
		return tables;
	}
}


function buildShowArray(indexTable)
{
	//create 2D array, 1st D is for the table index, 2nd is for display of each col
	var dispTable = new Array();
	
	for (var ti=0;ti<MAX_TABLES;ti++)
	{
		//create 2nd D for array
		dispTable[ti] = new Array();
		
		//for each possible column default to hide
		for (var i=0;i<MAX_COLS;i++)
		{
			dispTable[ti][i] = HIDE_STYLE;
		}
	
		//now for each index in speficied table show that col
		for (var i=0;i<indexTable.length;i++)
		{
			dispTable[ti][indexTable[i]] = SHOW_STYLE;
		}
	}
	
	//Hardcode hide extra col for 2nd table
	dispTable[1][EXTRA_COL] = HIDE_STYLE;


	return dispTable;
}

function showAllRates()
{
	setDisplayTables(ALL_RATES_DISP);
}

function showRegularRates()
{
	setDisplayTables(REGULAR_RATES_DISP);
}

function showOvertimeRates()
{
	setDisplayTables(OVERTIME_RATES_DISP);
}

function showHolidayRates()
{
	//alert("showHolidayRates");
	setDisplayTables(HOLIDAY_RATES_DISP);
}

function setDisplayTables(colDispArray)
{
	//var table1 = document.getElementById('table1');
	//setDisplay(table1, colDispArray);

	//var table2 = document.getElementById('table2');
	//setDisplay(table2, colDispArray);

	//this assumes you want to modify all tables
	//var tables = document.getElementsByTagName("table");
	var tables = getTables();
	
	//alert("setDisplayTables: tables="+tables+" len="+tables.length);

	for (var ti=0;ti<tables.length;ti++)
	{
		//setDisplay(tables[ti], colDispArray);
		setDisplay(tables[ti], colDispArray[ti]);
	}
}


function setDisplay(table, colDispArray)
{
	//alert("table="+table+" : "+dumpObj(table));
	//alert("table="+table+" : "+dumpObjBrief(table));

	var rows = table.getElementsByTagName("tr");
	
	//alert("setDisplay: table="+table);

	//process each row
	for (var ri=0;ri<rows.length;ri++)
	{
		var row = rows[ri];

		//find each column, and set display
		var cols = row.getElementsByTagName("td");
		for (var ci=0;ci<cols.length;ci++)
		{
			//set display style for this cell to match specified for column
			var col = cols[ci];

			//alert("ci="+ci+" old="+col.style.display+" new="+colDispArray[ci]);
			
			col.style.display = colDispArray[ci];
		}
		//break;
	}
		
}

//since the table data is imported we can't easily control the class for
//the rows and columns, so at init find the tables and set CSS classes
function setClasses()
{
	//var tables = document.getElementsByTagName("table");
	var tables = getTables();

	//alert("setClasses: tables="+tables);

	for (var ti=0;ti<tables.length;ti++)
	{
		var table = tables[ti];

		var rows = table.getElementsByTagName("tr");

		//just set first row
		//alert("rows[0]="+rows[0]+" style="+rows[0].style+" class="+rows[0].style.class);
		//alert("style: "+dumpObj(rows[0].style));
		//alert("style: "+dumpObjBrief(rows[0].style));
		//alert("rows[0]="+rows[0]+" "+dumpObj(rows[0]));
		//alert("rows[0]="+rows[0]+" "+dumpObjBrief(rows[0]));

		//rows[0].class = "topRow";
		rows[0].className = "topRow";
		

		//skip first row, just set for 2nd row on
		for (var ri=1;ri<rows.length;ri++)
		{
			var row = rows[ri];
			
			//find each column, and set display
			var cols = row.getElementsByTagName("td");

			cols[0].className = "leftCell";
			cols[1].className = "weekDaysCell";
			
			for (var ci=2;ci<cols.length;ci++)
			{
				cols[ci].className = "cell";
			}
				
			//hide the extra col for 2nd table
			//if (ti == 1 && (cols.length - 1) == EXTRA_COL)
			/*if (ti == 1)
			{
				cols[EXTRA_COL].style.display = HIDE_STYLE;
				alert("ti="+ti+" ri="+ri+" cols.length="+cols.length+" disp="+cols[EXTRA_COL].style.display);
			}*/
		}
	}
}
