// dailyNavTable.js

var aColNameDailyNav = new Array();
var aIsColVisibleDailyNav = new Array();	// non-visible columns are used for filtering purposes
var aFormatFunctionDailyNav = new Array();
var aStyleNameDailyNav = new Array();
var aTableRowsDailyNav = new Array();		// 2D Array of all the rows in the table - aTableRows[Row][Col]
var iRenderedRowsDailyNav = 0;
var selFlagDN = false;

function AddColumnDN(sColName, isVisible, sFormatFunction, className) {
	// Creates a new range type
	aColNameDailyNav.push(sColName);
	aIsColVisibleDailyNav.push(isVisible);
	aFormatFunctionDailyNav.push(sFormatFunction);
	aStyleNameDailyNav.push(className);
}

function AddRowDN() {
	// Adds each parameter to an object and sets up
	var aTableRow = new Array();
	if (aColNameDailyNav.length != AddRowDN.arguments.length) {
		alert("Invalid number of params sent to child row.");
	}

	for (i=0; i < AddRowDN.arguments.length; i++) {
		aTableRow.push(AddRowDN.arguments[i]);
	}
	aTableRow["isVisible"] = false;
	aTableRowsDailyNav.push(aTableRow);
}

function AddSubheaderDN(fnName, stCategory, stClass) {
	var aTableRow = new Array();
	aTableRow["isFunction"] = "function";
	aTableRow["isVisible"] = false;
	aTableRow[0]=stCategory;
	aTableRow[1]=stClass;
	aTableRow.push(fnName);
	aTableRowsDailyNav.push(aTableRow);
}

function AddSubHeaderingPerfDN(text1) {
	var headerRow=document.getElementById('tblDailyNav').insertRow(-1);
	headerRow.className="bgName";
	var col1=headerRow.insertCell(0);
	col1.className="bgName";
	col1.setAttribute("width","4");
	var col2=headerRow.insertCell(1);
	col2.className="perfTableNameCol";
	var col3=headerRow.insertCell(2);
	col3.colSpan=6;
	col1.innerHTML="";
	col2.innerHTML=text1;
	col3.innerHTML="";
	iRenderedRowsDailyNav++;
}

function RenderTableDN() {
	var tdColor = "";
	var nFundsRendered = 0;
	for (row=0; row < aTableRowsDailyNav.length; row++) {
		if (aTableRowsDailyNav[row]["isVisible"]) {
			if (aTableRowsDailyNav[row]["isFunction"] == "function") {
				// Evaluate a subheader row (a new fund)
				if (tdColor != "") {
					RenderBlankRowDN(tdColor);
				}
				tdColor = "White";
				if (nFundsRendered % 5 == 0) {
					// Add a header every 5 funds
					RenderHeaderDN();
					RenderBlankRowDN(tdColor);
				}
				eval(aTableRowsDailyNav[row][2]);
				nFundsRendered++;
			} else {
				// Evaluate a data row
				RenderRowDN(tdColor, aTableRowsDailyNav[row]);
			}
			tdColor = (tdColor == "Interior" ? "White" : "Interior");
		}
	}
}

function noInfoDN(text1) {
	var headerRow = document.getElementById('tblDailyNav').insertRow(-1);
	headerRow.className="bgWhite";
	var col1=headerRow.insertCell(0);
	col1.className="bgWhite";
	col1.setAttribute("width","4");
	var col2=headerRow.insertCell(1);
	col2.className="perfTableWhite";
	col2.colSpan=7;
	col1.innerHTML="";
	col2.innerHTML=text1;
	iRenderedRowsDailyNav++;
}

function filterResultDN(objCat, objClass, strNoSelectionMsg) {
	var flag = false;
	var tmpId = "";
	selFlagDN = false;
	if (typeof objCat != "undefined" && typeof objClass != "undefined") {
		for (i=0; i < objCat.length; i++) {
			if (objCat[i].checked) {
				for(j=0; j < aTableRowsDailyNav.length; j++) {
				//alert(aTableRowsMonMark[j][0]+"-"+j);
					//check categories
					if (objCat[i].value == aTableRowsDailyNav[j][0]) {
							if (aTableRowsDailyNav[j][1] == "-1") {
								aTableRowsDailyNav[j]["isVisible"] = true;
								flag = false;
								tmpId = j;
								continue;
							} else if (aTableRowsDailyNav[j][1] == "-2" && flag) {
								aTableRowsDailyNav[j]["isVisible"] = true;
								continue;
							} else {
								for (k=0; k < objClass.length; k++) {
									if (objClass[k].checked) {
										//alert("form check box=="+objClass[k].checked);
										if(aTableRowsDailyNav[j][1]=="Class R1" || aTableRowsDailyNav[j][1]=="Class R2"
											|| aTableRowsDailyNav[j][1]=="Class R3"){
										  	  aTableRowsDailyNav[j][1]="Class R";
										}
										if (objClass[k].value == aTableRowsDailyNav[j][1]) {
											aTableRowsDailyNav[j]["isVisible"] = true;
											if (!flag) {
												//alert(j);
												aTableRowsDailyNav[tmpId]["isVisible"] = true;
												flag = true;
												selFlagDN = true;
											}
										}
									}
								}
								if (!flag) {
									aTableRowsDailyNav[tmpId]["isVisible"] = false;
								}
							}
					}
				}
			}
		}
	}
	if (!selFlagDN) {
		noInfoDN(strNoSelectionMsg);
	}
}

function clearTableDN() {
	var table = document.getElementById("tblDailyNav");

	// Clear the table before re-rendering
	for (row=0; row < iRenderedRowsDailyNav; row++) {
		table.deleteRow(-1);
	}
	iRenderedRowsDailyNav = 0;
	ClearFiltersDN();
}

function ClearFiltersDN() {
	for (row=0; row < aTableRowsDailyNav.length; row++) {
		aTableRowsDailyNav[row]["isVisible"] = false;
	}
}

// Just add the rows to an array and render via the next function
var aHeaderDN;
function AddHeaderDN(text1, text2, text3, text4, text5, text6, text7) {
	aHeaderDN = new Array()
	aHeaderDN.push(text1);
	aHeaderDN.push(text2);
	aHeaderDN.push(text3);
	aHeaderDN.push(text4);
	aHeaderDN.push(text5);
	aHeaderDN.push(text6);
	aHeaderDN.push(text7);
}

// Render the header row
function RenderHeaderDN() {
	var headerRow = document.getElementById('tblDailyNav').insertRow(-1);
	headerRow.align="center";
	var col1=headerRow.insertCell(0);
	col1.className="perfTableSub";
	col1.setAttribute("width","4");
	var col2=headerRow.insertCell(1);
	col2.className="perfTableSub";
	col2.align="left";
	col2.setAttribute("width","28%");
	col2.style.borderRight='solid 1px #ffffff';
	var col3=headerRow.insertCell(2);
	col3.className="perfTableSub";
	col3.setAttribute("width","12%");
	col3.style.borderRight='solid 1px #dfdede';
	var col4=headerRow.insertCell(3);
	col4.className="perfTableSub";
	col4.setAttribute("width","12%");
	col4.style.borderRight='solid 1px #dfdede';
	var col5=headerRow.insertCell(4);
	col5.className="perfTableSub";
	col5.setAttribute("width","12%");
	col5.style.borderRight='solid 1px #dfdede';
	var col6=headerRow.insertCell(5);
	col6.className="perfTableSub";
	col6.setAttribute("width","12%");
	col6.style.borderRight='solid 1px #dfdede';
	var col7=headerRow.insertCell(6);
	col7.className="perfTableSub";
	col7.setAttribute("width","12%");
	col7.style.borderRight='solid 1px #dfdede';
	var col8=headerRow.insertCell(7);
	col8.className="perfTableSub";
	col8.setAttribute("width","12%");
	col1.innerHTML="";
	col2.innerHTML=aHeaderDN[0];
	col3.innerHTML=aHeaderDN[1];
	col4.innerHTML=aHeaderDN[2];
	col5.innerHTML=aHeaderDN[3];
	col6.innerHTML=aHeaderDN[4];
	col7.innerHTML=aHeaderDN[5];
	col8.innerHTML=aHeaderDN[6];
	iRenderedRowsDailyNav++;
}

// Renders a blank row in White or Interior colors
function RenderBlankRowDN(tdColor) {
	var aBlankRow = new Array();
	for (col=0; col < aColNameDailyNav.length; col++) {
		aBlankRow.push("&nbsp;");
	}
	RenderRowDN(tdColor, aBlankRow);
}
// Render a data row
function RenderRowDN(tdColor, aTableRow) {
	newRow = document.getElementById('tblDailyNav').insertRow(-1);
	newRow.setAttribute("align","center");
	newRow.setAttribute("valign","top");
	newRow.vAlign="top";

	if (tdColor == "Interior") {
		tdSubC = "Interior";
		tdSwitchC = "Interior";
	} else {
		tdSubC = "Column";
		tdSwitchC = "White";
	}

	for (col=0; col < aColNameDailyNav.length; col++) {
		if (aIsColVisibleDailyNav[col]) {
			newCol = newRow.insertCell(-1);
			if (col == 2) {
				newCol.className="bg" + tdColor;
				newRow.setAttribute("width","4");
			} else if (col == 3) {
				newCol.className="perfTable" + tdColor + "Col";
				newCol.setAttribute("align","left");
			} else {
				if (tdSubC == "Column") {
					if (tdSwitchC == "Column") {
						tdSwitchC = "White";
					} else {
						tdSwitchC = "Column";
					}
				}
				newCol.className=" perfTable" + tdSwitchC;
			}

			displayVal = aTableRow[col];
			newCol.innerHTML = displayVal;
		}
	}
	iRenderedRowsDailyNav++;
}