	var Principle, PropertyValue, DownPaymentPercentage, DownPaymentAmount;
	var InterestRate, LoanDurationMonths, LoanDurationYears, MonthlyPayment;
	function CheckAllFields()
	{
		var errorMsg = '';
		if(!CheckDollarField(document.getElementById("PropertyValue")))
			errorMsg += ' valid Property Value\n';
		
		if(!CheckDollarField(document.getElementById("DownPaymentAmount")))
			errorMsg += ' valid Down Payment Amount\n';
		
		if(!CheckFloatField(document.getElementById("DownPaymentPercentage")))
			errorMsg += ' valid Down Payment Percentage\n';
		
		if(!CheckFloatField(document.getElementById("InterestRate")))
			errorMsg += ' + valid Interest Rate\n';
		
		if(!CheckIntField(document.getElementById("LoanDurationMonths")))
			errorMsg += ' valid Loan Duration in months (integer)\n';
		
		if(!CheckFloatField(document.getElementById("LoanDurationYears")))
			errorMsg += ' + valid Loan Duration in years\n';
	
		if(errorMsg == '')
			return true;
		else
		{
			alert('Please enter:\n' + errorMsg);
			return false;
		}
	}
	
	function CheckDollarField(field)
	{
		var fieldValue;
		fieldValue = ReadDollarField(field);
		
		if(isNaN(fieldValue))
			return false;
		else
		{
			field.value = FloatToDollarString(fieldValue);
			return true;
		}
	}
	
	function CheckFloatField(field)
	{
		var fieldValue = field.value;
		
		if(fieldValue.indexOf(".") != -1)
		{
			while(fieldValue.charAt(fieldValue.length - 1) == "0")
				fieldValue = fieldValue.substring(0, fieldValue.length-1);
			
			if(fieldValue.charAt(fieldValue.length - 1) == ".")
				fieldValue = fieldValue.substring(0, fieldValue.length-1);
		}
		
		if("" + parseFloat(fieldValue) != fieldValue)
			return false;
		else
			return true;
	}
	
	function CheckIntField(field)
	{
		var fieldValue = field.value;
		
		if(isNaN(fieldValue))
			return false;
		else {
			field.value = '' + parseInt(fieldValue)
			return true;
		}
	}
	
	function ReadDollarField(field)
	{
		var fieldValue, pos;
		
		fieldValue = field.value;
		if(fieldValue.charAt(0) == "$")
			fieldValue = fieldValue.substring(1, fieldValue.length);
		
		pos = fieldValue.lastIndexOf(",");
		while(pos != -1)
		{
			fieldValue = fieldValue.substring(0, pos) + fieldValue.substring(pos+1, fieldValue.length);
			pos = fieldValue.lastIndexOf(",", pos);
		}
		
		return parseFloat(fieldValue);
	}
	
	function FloatToDollarString(fieldValue)
	{
		var pos;
		fieldValue = "" + Math.round(fieldValue);
		
		pos = fieldValue.length;
		pos -= 4;
		while(pos >= 0)
		{
			fieldValue = fieldValue.substring(0, pos+1) + "," + fieldValue.substring(pos+1, fieldValue.length);
			pos -= 3;
		}
		
		return fieldValue;
	}
	
	function GetFieldValues()
	{
		PropertyValue = ReadDollarField(document.getElementById("PropertyValue"));
		DownPaymentPercentage = parseFloat(document.getElementById("DownPaymentPercentage").value);
		DownPaymentAmount = ReadDollarField(document.getElementById("DownPaymentAmount"));
		InterestRate = parseFloat(document.getElementById("InterestRate").value);
		LoanDurationMonths = parseInt(document.getElementById("LoanDurationMonths").value);
		LoanDurationYears = parseFloat(document.getElementById("LoanDurationYears").value);
	}
	
	function Reset()
	{
		//alert("reset");
		document.getElementById("PropertyValue").value = document.getElementById("ListingPrice").value;
		document.getElementById("DownPaymentPercentage").value = "20";
		document.getElementById("DownPaymentAmount").value = "" + CalculateDownPaymentAmount();
		document.getElementById("InterestRate").value = "5.0";
		document.getElementById("LoanDurationMonths").value = "360";
		document.getElementById("LoanDurationYears").value = "30";
		CalculateMonthlyPay();
	}
	
	function CalculateLoanDurationMonths()
	{
		LoanDurationYears = parseFloat(document.getElementById("LoanDurationYears").value);
		LoanDurationMonths = Math.round(LoanDurationYears * 12.0);
		document.getElementById("LoanDurationYears").value = "" + (parseFloat(LoanDurationMonths)/12.0);
		return LoanDurationMonths;
	}
	
	function CalculateLoanDurationYears()
	{
		LoanDurationMonths = parseInt(document.getElementById("LoanDurationMonths").value);
		LoanDurationYears = (parseFloat(LoanDurationMonths) / 12.0);
		document.getElementById("LoanDurationMonths").value = "" + Math.round(LoanDurationYears * 12.0);
		return LoanDurationYears;
	}
	
	function CalculateDownPaymentAmount()
	{
		PropertyValue = ReadDollarField(document.getElementById("PropertyValue"));
		DownPaymentPercentage = parseFloat(document.getElementById("DownPaymentPercentage").value);
		return (parseFloat(PropertyValue) * DownPaymentPercentage / 100.0);
	}
	
	function CalculateDownPaymentPercentage()
	{
		PropertyValue = ReadDollarField(document.getElementById("PropertyValue"));
		DownPaymentAmount = ReadDollarField(document.getElementById("DownPaymentAmount"));
		return (100 * DownPaymentAmount / PropertyValue);
	}
	
	function CalculateMonthlyPay()
	{
		var MonthlyInterestRate, Principle;
		
		if (!CheckAllFields())
			return;
		
		GetFieldValues();
		
		Principle = PropertyValue - DownPaymentAmount;
		MonthlyInterestRate = InterestRate / (12.0 * 100.0);
		
		if (MonthlyInterestRate == 0)
			MonthlyPayment = Principle / LoanDurationMonths;
		else
			MonthlyPayment = Principle * (MonthlyInterestRate / (1 - Math.pow((1 + MonthlyInterestRate), -LoanDurationMonths)));
		MonthlyPayment = Math.round(MonthlyPayment * 100) / 100;
	
		document.getElementById("MonthlyPayment").value = FloatToDollarString(MonthlyPayment);
	}
	
	function ChangePropertyValue()
	{
		document.getElementById("DownPaymentAmount").value = "" + CalculateDownPaymentAmount();
		
		if (!CheckAllFields())
			return ;
		
		CalculateMonthlyPay();
	}
	
	function ChangeDownPaymentPercentage()
	{
		document.getElementById("DownPaymentAmount").value = "" + CalculateDownPaymentAmount();
		
		if (!CheckAllFields())
			return ;
		
		CalculateMonthlyPay();
	}
	
	function ChangeDownPaymentAmount()
	{
		document.getElementById("DownPaymentPercentage").value = "" + CalculateDownPaymentPercentage();
		
		if (!CheckAllFields())
			return ;
		
		CalculateMonthlyPay();
	}
	
	function ChangeInterestRate()
	{
		if (!CheckAllFields())
			return ;
		
		CalculateMonthlyPay();
	}
	
	function ChangeLoanDurationMonths()
	{
		document.getElementById("LoanDurationYears").value = "" + CalculateLoanDurationYears();
		
		if (!CheckAllFields())
			return ;
		
		CalculateMonthlyPay();
	}
	
	function ChangeLoanDurationYears()
	{
		document.getElementById("LoanDurationMonths").value = "" + CalculateLoanDurationMonths();
		
		if (!CheckAllFields())
			return ;
		
		CalculateMonthlyPay();
	}


