﻿var validationItems = new Array();

function addAmortizationRow(item) {
	var tr = document.createElement("tr");
	var col1 = document.createElement("td");
	var col2 = document.createElement("td");
	var col3 = document.createElement("td");
	var col4 = document.createElement("td");
	var col5 = document.createElement("td");

	col1.innerHTML = item.number;
	col2.innerHTML = formatNumber(item.outstanding, 2);
	col3.innerHTML = formatNumber(item.interest, 2);
	col4.innerHTML = formatNumber(item.principal, 2);
	col5.innerHTML = formatNumber(item.remaining, 2);
	
	tr.appendChild(col1);
	tr.appendChild(col2);
	tr.appendChild(col3);
	tr.appendChild(col4);
	tr.appendChild(col5);
	return tr;
}
function addPaymentRow(payment) {
	var tr = document.createElement("tr");
	var col1 = document.createElement("td");
	var col2 = document.createElement("td");
	var col3 = document.createElement("td");
	var col4 = document.createElement("td");

	col1.innerHTML = payment.number;
	col2.innerHTML = formatNumber(payment.interest, 2, languageCode);
	col3.innerHTML = formatNumber(payment.principal, 2, languageCode);
	col4.innerHTML = formatNumber(payment.remaining, 2, languageCode);
	
	tr.appendChild(col1);
	tr.appendChild(col2);
	tr.appendChild(col3);
	tr.appendChild(col4);
	return tr;
}
function baseClearResults(calculatorIndex) {
	getValueSpan(document.getElementsByName("payment")[calculatorIndex]).innerHTML = "";
	getValueSpan(document.getElementsByName("interest")[calculatorIndex]).innerHTML = "";
	getValueSpan(document.getElementsByName("principal")[calculatorIndex]).innerHTML = "";
	getValueSpan(document.getElementsByName("remaining")[calculatorIndex]).innerHTML = "";
	getValueSpan(document.getElementsByName("amortization")[calculatorIndex]).innerHTML = "";
}
function baseValidationItems() {
	validationItems.push(new ValidationItem(document.getElementsByName("tbMortgage")[0], document.getElementsByName("tbMortgage")[0].value != "", "Mortgage Error"));
	validationItems.push(new ValidationItem(document.getElementsByName("tbInterest")[0], document.getElementsByName("tbInterest")[0].value != "", "Interest Error"));
	validationItems.push(new ValidationItem(document.getElementsByName("tbTermYears")[0], document.getElementsByName("tbTermYears")[0].value != "", "Term Years Error"));
	validationItems.push(new ValidationItem(document.getElementsByName("tbAmortizationYears")[0], document.getElementsByName("tbAmortizationYears")[0].value != "", "Amortization Years Error"));

	validationItems.push(new ValidationItem(document.getElementsByName("tbMortgage")[1], document.getElementsByName("tbMortgage")[1].value != "", "Mortgage Error"));
	validationItems.push(new ValidationItem(document.getElementsByName("tbInterest")[1], document.getElementsByName("tbInterest")[1].value != "", "Interest Error"));
	validationItems.push(new ValidationItem(document.getElementsByName("tbTermYears")[1], document.getElementsByName("tbTermYears")[1].value != "", "Term Years Error"));
	validationItems.push(new ValidationItem(document.getElementsByName("tbAmortizationYears")[1], document.getElementsByName("tbAmortizationYears")[1].value != "", "Amortization Years Error"));
}
function buildAmortization(amortization) {
	for(var i = 0; i < amortization.length; i++) {
		document.getElementById("tblAmortization").appendChild(addAmortizationRow(amortization[i]));
	}
}
function buildTable(payments) {
	var panel = document.getElementById("ammortizationPanel");
	panel.innerHTML = "";
	var table = document.createElement("table");
	var tbody = document.createElement("tbody");
	
	for(var i = 0; i < payments.length; i++) {
		tbody.appendChild(addPaymentRow(payments[i]));
	}
	table.appendChild(tbody);
	panel.appendChild(table);
}
function Calculate() {
	var args1 = new Array("0");
	XmlHttpRequest_POST(postback, args1, "calculator.php", calculatorPostArray(args1[0]).join("&"));

	var args2 = new Array("1");
	XmlHttpRequest_POST(postback, args2, "calculator.php", calculatorPostArray(args2[0]).join("&"));
}
function changeToText(col1, select) {
	var div = document.createElement("div");
	var del = document.createElement("img");
	del.src = "images/reddelete.gif";
	del.className = "deleteImage";
	del.onclick = function() {col1.parentNode.parentNode.removeChild(col1.parentNode);};
	del.width = "10";
	del.height = "10";
	del.border = "0";
	div.appendChild(del);

	var span = document.createElement("span");
	span.style.paddingLeft = "5px";
	span.innerHTML = select.options[select.selectedIndex].innerHTML;
	div.appendChild(span);
	col1.appendChild(div);
	col1.removeChild(select);
}
function equalizePayments() {
	var oldPayment = parseFloat(document.getElementsByName("payment")[0].value);
	var newPayment = parseFloat(document.getElementsByName("payment")[1].value);
	document.getElementsByName("tbPrePayment")[1].value = roundNumber(oldPayment - newPayment, 2);
	runCalculate();
}
function GetTotalsByName(name) {
	var total = 0;
	var items = document.getElementsByName(name);
	for(var i = 0; i < items.length; i++) {
		total += isNumeric(parseInt(items[i].value)) ? parseInt(items[i].value) : 0;
	}
	return total;
}
function GetTotalsByInput(containerid) {
	var container = document.getElementById(containerid);
	var total = 0;
	var items = container.getElementsByTagName("input");
	for(var i = 0; i < items.length; i++) {
		total += isNumeric(parseInt(items[i].value)) ? parseInt(items[i].value) : 0;
	}
	return total;
}
function GetTotalsByName(name) {
	var total = 0;
	var items = GetElementsByTagName("input", name, "tableDebts");
	for(var i = 0; i < items.length; i++) {
		total += isNumeric(parseInt(items[i].value)) ? parseInt(items[i].value) : 0;
	}
	return total;
}
function xGetTotalsByName(name) {
	var total = 0;
	var items = document.getElementsByName(name);
	for(var i = 0; i < items.length; i++) {
		total += isNumeric(parseInt(items[i].value)) ? parseInt(items[i].value) : 0;
	}
	return total;
}
function getValueSpan(o) {
	var span = o.parentNode.getElementsByTagName("span")[0];
	return span;
}
function IsValid(ctrl, condition, message) {
	if(condition)
		return true;
	var messages = document.getElementById("ulMessages");
	var messageitem = document.createElement("li");
	messageitem.innerHTML = message;
	messageitem.className = "messageItem";
	messageitem.onmouseover = function() {
		this.className = "messageItem_Over";
	};
	messageitem.onmouseout = function() {
		this.className = "messageItem";
	};
	messageitem.onclick = function() {
		ctrl.focus();
		ctrl.select();
	};
	messages.appendChild(messageitem);
	return false;
}
function mortgageCompare() {
	var classname = monthlyClass;
	if(monthlyClass == "monthlyColumn") {
		monthlyClass = "monthlyColumn_show";
		lMortgageCompare.style.display = 'none';
		chkEqualizePayments.style.display = 'block';
	}
	else {
		monthlyClass = "monthlyColumn";
		lMortgageCompare.style.display = 'block';
		chkEqualizePayments.style.display = 'none';
	}

	var x = document.getElementsByTagName("td");
	for(var i = 0; i < x.length; i++) {
		if(x[i].className == classname) {
			x[i].className = monthlyClass;
		}
	}
}
function toggleWorking(state) {
	var calculate = document.getElementById("bCalculate");
	var classname = calculate.className;
	if(state) {
		calculate.className = "link_disabled";
		calculate.disabled = true;
		//tWorking.style.height = document.body.offsetHeight + "px";
		//tWorking.style.display = "block";
	}
	else {
		calculate.className = "link";
		calculate.disabled = false;
		//tWorking.style.display = "none";
	}
}
function Validate() {
	validationItems = new Array();
	ValidationItems();
	var valid = true;
	document.getElementById("ulMessages").innerHTML = "";
	for(var i = 0; i < validationItems.length; i++) {
		var vi = validationItems[i];
		if(!IsValid(vi.Control, vi.Condition, vi.Message))
			valid = false;
	}
	
	if(document.getElementsByName("tbTermYears")[0].value != "" && document.getElementsByName("tbTermMonths")[0].value == "")
		document.getElementsByName("tbTermMonths")[0].value = 0;
	if(document.getElementsByName("tbTermYears")[1].value != "" && document.getElementsByName("tbTermMonths")[1].value == "")
		document.getElementsByName("tbTermMonths")[1].value = 0;
	if(document.getElementsByName("tbAmortizationYears")[0].value != "" && document.getElementsByName("tbAmortizationMonths")[0].value == "")
		document.getElementsByName("tbAmortizationMonths")[0].value = 0;
	if(document.getElementsByName("tbAmortizationYears")[1].value != "" && document.getElementsByName("tbAmortizationMonths")[1].value == "")
		document.getElementsByName("tbAmortizationMonths")[1].value = 0;

	return valid;
}

