
window.addEvent('domready', function(){
	
	var myColumnDefs = [
	
		{key:'year',label:"Yr",width:8},
		{key:'rt_Interest_disp',label:"Interest"},
		{key:'rt_principal_disp',label:"Principal"},
		{key:'r_balance_disp',label:"Balance"},
		{key:'monthly_payment_disp',label:"Monthly P+I"},
		{key:'other_payments_disp',label:"Other",help:"Monthly PT+PMI+HI"},
		{key:'net_housing_disp',label:"Net Housing"},
		{key:'tax_savings_disp',label:"Tax Savings"},
		{key:'equity_disp',label:"Equity"},
		{key:'rate_savings_disp',label:"Rate Savings",hidden:true}
		 
	];
	// start at the Interest column
	for (var i=1;i<myColumnDefs.length;i++) {
		myColumnDefs[i].resizeable = true;
		myColumnDefs[i].formatter = myFormatCurrency;
		myColumnDefs[i].className = 'align-center';
	}
	
	var visible_headers = ["year","rt_Interest_disp","rt_principal_disp",'r_balance_disp',
		'monthly_payment_disp','tax_savings_disp','other_payments_disp','net_housing_disp',
		'rate_savings_disp','equity_disp'];
	
	var data = [{year:0,rt_Interest_disp:0,rt_principal_disp:0,r_balance_disp:0,
		monthly_payment_disp:0,tax_savings_disp:0,other_payments_disp:0,net_housing_disp:0,
		rate_savings_disp:0,equity_disp:0
	}];

	initCharts();


	balanceDataTable = new YAHOO.widget.DataTable("balanceTable",
			myColumnDefs, balanceDataSource, {   
				scrollable: true,
				height: "350px"
				//width: "670px"
				    
			}
	);
			
	balanceDataTable.subscribe("rowMouseoverEvent", updateChartsOver);
	balanceDataTable.subscribe("rowMouseoutEvent", updateChartsOut);
	
	
	calculate_all();
	
   
	menu = new YAHOO.widget.Menu('menutarget');
	for (i=0;i<myColumnDefs.length;i++) {
		column = myColumnDefs[i];
		notHidden = !(column.hidden);
		oMenuItem = menu.addItem({text: column.label || column.key,value:column.key, checked:notHidden});
	   
	}
	 menu.subscribe("click", function onMenuClick(sType, oArgs) {	
		var oMenuItem = oArgs[1]; 
		toggleColumn(oMenuItem.value);
	});
	menu.render();



	balanceDataTable.myHideColumn = function (oColumn) {
		oColumn = this.getColumn(oColumn);
		if (oColumn && !oColumn.hidden) {
			if (oColumn.getTreeIndex() !== null) {
				var allrows = this.getTbodyEl().rows;
				var l = allrows.length;
				var allDescendants = this._oColumnSet.getDescendants(oColumn);
				for (var i = 0; i < allDescendants.length; i++) {
					var thisColumn = allDescendants[i];
					thisColumn.hidden = true;
					var elTheadCell = thisColumn.getThEl();
					var elTheadCellLiner = elTheadCell.firstChild;
					thisColumn._nLastWidth = elTheadCellLiner.offsetWidth - (parseInt(Dom.getStyle(elTheadCellLiner, "paddingLeft"), 10) | 0) - (parseInt(Dom.getStyle(elTheadCellLiner, "paddingRight"), 10) | 0);
					Dom.addClass(elTheadCell, "yui-dt-hidden");
					var thisKeyIndex = thisColumn.getKeyIndex();
					if (thisKeyIndex !== null) {
						for (var j = 0; j < l; j++) {
							Dom.addClass(allrows[j].cells[thisKeyIndex], "yui-dt-hidden");
						}
						this._setColumnWidth(thisColumn, "0px");
						if (thisColumn.resizeable) {
							Dom.removeClass(thisColumn.getResizerEl(), "yui-dt-resizer");
						}
						if (thisColumn.sortable) {
							Dom.removeClass(thisColumn.getThEl(), "yui-dt-sortable");
							thisColumn.getThEl().firstChild.firstChild.firstChild.style.display = "none";
						}
					} else {
						elTheadCell.firstChild.style.width = "0px";
					}
					this.fireEvent("columnHideEvent", {column:thisColumn});
				}
			} else {
			}
		}
	}


	$D = YAHOO.util.Dom;
	var showColumns = new YAHOO.widget.Button(
		{
			type: "split",  
			label: "Show Columns", 
			name: "showColumnsButton", 
			menu: menu, 
			container: "splitButtonContainer",
			disabled:true
		}
	);   

	$('balanceTable_menu_control').addEvent("click", function(event) {
	
		var tableDiv = $('balanceTable_container');
		
		var box_xl =  tableDiv.getLeft() + tableDiv.getWidth() - 16;
		var box_xr =  tableDiv.getLeft() + tableDiv.getWidth();
		var box_yt =  tableDiv.getTop();
		var box_yb =  tableDiv.getTop() + 22;
		var evy = event.page.y;
		var evx = event.page.x;
	
		//if (((evy > box_yt) && (evy < box_yb)) && ((evx > box_xl) && (evx < box_xr))) {
		
			showColumns._menu.show();
			showColumns._menu.element.style.top = evy;
			showColumns._menu.element.style.left = evx;
			
			
		//}
	});

});

function myFormatCurrency(el, oRecord, oColumn, oData) {
	var showCents = false;
	places=0;
	thous_sep=",";
	if (showCents) places = 2;
	if (oData < 0 && oData > -1000) thous_sep = "";
    el.innerHTML = YAHOO.util.Number.format(oData, {
            prefix:"$",
            decimalPlaces:places,
            decimalSeparator:".",
            thousandsSeparator:thous_sep
        });
}

function updateChartsOver(e) {
	var event = {
		item: {
			year: e.target.rowIndex - 1
		}
	}
	onChartItemOver(event);
	balanceDataTable.onEventHighlightRow(e);
}

function updateChartsOut(e) {
	onChartItemOut(e);
	balanceDataTable.onEventUnhighlightRow(e);
}


function clearTable() {
	
	var recordSet = balanceDataTable.getRecordSet();
	//if (recordSet != undefined) {
		var length = recordSet.getLength();
            if(length > 0) {
             
                balanceDataTable.deleteRows(0,length);
                balanceRows = [];
            }
	//}
}

function toggleColumn(colName) {
	
	var	column = balanceDataTable.getColumn(colName);
	var	items = menu.getItems();
	for (i=0;i<items.length;i++) {
	 	var item = items[i];
	 	if (item != undefined) {
				if (item.value == colName) {
					oMenuItem = item;
				}
		 	}
		 }
		 if (oMenuItem != undefined) {
			if (column.hidden) {
				balanceDataTable.showColumn(column);
				oMenuItem.checked = false;
				oMenuItem.cfg.setProperty("checked", true);
					
				} else {
				balanceDataTable.hideColumn(column);
				oMenuItem.checked = true;
				oMenuItem.cfg.setProperty("checked", false);
			}
			//menu.render();
			//calculate_all();
		}
	}