﻿function calculateLoanAmount()
{
    document.getElementById("spnPayment").innerHTML="";
    document.getElementById("spnMonths").innerHTML="";
    document.getElementById("spnInterest").innerHTML="";
    document.getElementById("spnTotal").innerHTML="";    
    
    document.getElementById("tdContent").innerHTML="";
    
    if(validateForm() == true)
    {
        var Loan = parseFloat(Replace(document.getElementById("txtLoan").value.replace(/^\s+|\s+$/, ''), ',', ''));
        var Rate = parseFloat(document.getElementById("txtRate").value.replace(/^\s+|\s+$/, ''));
        var Years = parseFloat(document.getElementById("txtYears").value.replace(/^\s+|\s+$/, ''));
        document.getElementById("txtLoan").value = CommaFormatted(Loan.toFixed(2));
        Rate = (Rate/100)/12;
        
        var Months = (Years * 12);
        var Payment = (((Loan*Rate)/(1-Math.pow(1+Rate,(-1*Months)))*100)/100);
        var Total = (Payment * Months);
        var Interest = (Total - Loan);        
        document.getElementById("spnPayment").innerHTML= CommaFormatted(Payment.toFixed(2));        
        document.getElementById("spnMonths").innerHTML = Months;
        document.getElementById("spnInterest").innerHTML = CommaFormatted(Interest.toFixed(2));
        document.getElementById("spnTotal").innerHTML = CommaFormatted(Total.toFixed(2));
        
        var tblPayments = document.createElement("TABLE");
        var tbodyPayments = document.createElement("TBODY");
        var tr;
        var td;
        
        tblPayments.cellPadding = "2";
        tblPayments.cellSpacing = "1";
        tblPayments.border = "0";
        tblPayments.style.backgroundColor = "#0B38B9";
        tblPayments.width = "100%";
        tblPayments.appendChild(tbodyPayments);
        
        tr = document.createElement("TR");
        tbodyPayments.appendChild(tr);
        td = document.createElement("TH");
        td.innerHTML = "No";
        td.className = "mortgageContent";
        tr.appendChild(td);
        
        td = document.createElement("TH");
        td.innerHTML = "Begining Balance";
        td.className = "mortgageContent";
        tr.appendChild(td);
        
        td = document.createElement("TH");
        td.innerHTML = "Payment";
        td.className = "mortgageContent";
        tr.appendChild(td);
        
        td = document.createElement("TH");
        td.innerHTML = "Principal";
        td.className = "mortgageContent";
        tr.appendChild(td);
        
        td = document.createElement("TH");
        td.innerHTML = "Interest";
        td.className = "mortgageContent";
        tr.appendChild(td);
        
        td = document.createElement("TH");
        td.innerHTML = "Ending Balance";
        td.className = "mortgageContent";
        tr.appendChild(td);
        
        var OpeningBal = Loan;
        
        for(var month = 1; month <= Months; month++)
        {
            var monthInterest = (OpeningBal * Rate);
            var Principal =(Payment - monthInterest);
            
            tr = document.createElement("TR");
            tbodyPayments.appendChild(tr);
            td = document.createElement("TD");
            td.innerHTML = month;
            td.className = "mortgageContent";
            tr.appendChild(td);
            
            td = document.createElement("TD");
            td.innerHTML = CommaFormatted((OpeningBal).toFixed(2));
            td.className = "mortgageContent";
            tr.appendChild(td);
            td = document.createElement("TD");
            td.innerHTML = CommaFormatted(Payment.toFixed(2));
            td.className = "mortgageContent";
            tr.appendChild(td);
            
            td = document.createElement("TD");
            td.innerHTML = CommaFormatted(Principal.toFixed(2));
            td.className = "mortgageContent";
            tr.appendChild(td);
            
            td = document.createElement("TD");
            td.innerHTML = CommaFormatted(monthInterest.toFixed(2));
            td.className = "mortgageContent";
            tr.appendChild(td);
            
            td = document.createElement("TD");
            td.className = "mortgageContent";
            td.innerHTML = CommaFormatted((((OpeningBal - Principal) < 0)? 0:(OpeningBal - Principal)).toFixed(2));
            tr.appendChild(td);
            
            OpeningBal = (OpeningBal - Principal);            
        }
        
        document.getElementById("tdContent").appendChild(tblPayments);
        //location.href = "#Msg";
    } 
}
function ShowGraph()
{
    document.getElementById("spnPayment").innerHTML="0.00";
    document.getElementById("spnMonths").innerHTML="0.00";
    document.getElementById("spnInterest").innerHTML="0.00";
    document.getElementById("spnTotal").innerHTML="0.00";   
    document.getElementById("spanError").innerHTML= "";
    document.getElementById("tdContent").innerHTML = "";
    if(validateForm() == true)
    {
        if(parseFloat(document.getElementById("txtYears").value.replace(/^\s+|\s+$/, ''))>30)
        {
            document.getElementById("spanError").innerHTML= "Loan period in years cannot be greater than 30.";
        }
        else
        {        
            var Loan = parseFloat(Replace(document.getElementById("txtLoan").value.replace(/^\s+|\s+$/, ''), ',', ''));
            var Rate = parseFloat(document.getElementById("txtRate").value.replace(/^\s+|\s+$/, ''));
            var Years = parseFloat(document.getElementById("txtYears").value.replace(/^\s+|\s+$/, ''));
            var ReportServer = document.getElementById("ctl00_ContentPlaceHolder1_hdnCrystalReportServer").value;
            
            var TempRate = (Rate/100)/12;
            var Months = (Years * 12);
            var Payment = (((Loan*TempRate)/(1-Math.pow(1+TempRate,(-1*Months)))*100)/100);
            var Total = (Payment * Months);
            var Interest = (Total - Loan);        
            document.getElementById("spnPayment").innerHTML= CommaFormatted(Payment.toFixed(2));        
            document.getElementById("spnMonths").innerHTML = Months;
            document.getElementById("spnInterest").innerHTML = CommaFormatted(Interest.toFixed(2));
            document.getElementById("spnTotal").innerHTML = CommaFormatted(Total.toFixed(2));
            
            document.getElementById("tdContent").style.height = "350px";
            document.getElementById("tdContent").innerHTML = "<iframe src='" + ReportServer + "GetMortgageGraph.aspx?GraphType=mortgagecalculator&Loan=" + Loan + "&Rate=" + Rate + "&Months=" + Years + "' width='100%' height='100%' scrolling='no' frameborder='0'></iframe>"
        }
    }
}
function validateForm()
{
    var strMsg;
    strMsg="";

    document.getElementById("spanError").innerHTML="";

    if (Replace(document.getElementById("txtLoan").value.replace(/^\s+|\s+$/, ''), ',', '')=="")
    {
        strMsg+=", Loan Amount";
    }
    else if(isNaN(Replace(document.getElementById("txtLoan").value.replace(/^\s+|\s+$/, ''), ',', '')) == true)
    {
        strMsg+=", Loan Amount";
    }
    
    if (document.getElementById("txtRate").value.replace(/^\s+|\s+$/, '')=="")
    {
        strMsg+=", Annual Interest Rate";
    }
    else if(parseFloat(document.getElementById("txtRate").value.replace(/^\s+|\s+$/, ''))  > 100)
    {
        strMsg+=", Annual Interest Rate";
    }
     else if(isNaN(document.getElementById("txtRate").value.replace(/^\s+|\s+$/, '')) == true)
    {
        strMsg+=", Annual Interest Rate";
    }
    
    if (document.getElementById("txtYears").value.replace(/^\s+|\s+$/, '')=="")
    {
        strMsg+=", Loan period in years";
    }
    else if(isNaN(document.getElementById("txtYears").value.replace(/^\s+|\s+$/, '')) == true)
    {
        strMsg+=", Loan period in years";
    }
   
    if (strMsg!="")
     {
        document.getElementById("spanError").innerHTML= "The following fields have invalid value(s): " + strMsg.substring(1) + ".";
        return false;
    }
    
    return true;
}

function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
		num = "0";
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*100+0.50000000001);
		cents = num%100;
		num = Math.floor(num/100).toString();
	if(cents<10)
		cents = "0" + cents;
		
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
		
	return (((sign)?'':'-') + '$' + num + '.' + cents);
}

function Replace(Text, OldChar, NewChar)
{
	while(Text.indexOf(OldChar) > -1)
	{
		Text = Text.replace(OldChar, NewChar);
	}
	
	return Text;
}

function CommaFormatted(amount)
{
//        var delimiter = ","; // replace comma if desired
//        var a = amount.split('.',2)
//        var d = a[1];
//        var i = parseInt(a[0]);
//        if(isNaN(i)) { return ''; }
//        var minus = '';
//        if(i < 0) { minus = '-'; }
//        i = Math.abs(i);
//        var n = new String(i);
//        var a = [];
//        var len = 3;
//		
//		while(n.length > len)
//        {
//                var nn = n.substr(n.length-len);
//                a.unshift(nn);
//                n = n.substr(0,n.length-len);
//                
//                len = 2;
//        }
//        if(n.length > 0) { a.unshift(n); }
//        n = a.join(delimiter);
//        if(d.length < 1) { amount = n; }
//        else { amount = n + '.' + d; }
//        amount = minus + amount;
//        return amount;

          var delimiter = ","; // replace comma if desired
		amount = Replace(amount,",","");
		amount = amount + "";
		if(amount.indexOf("0") == 0)
		{
			amount = amount.substr(1, amount.length - 1);
		}
		var a = amount.split('.',2)
		var d = a[1];
		var i = parseInt(a[0]);
		if(isNaN(i)) { return ''; }
		var minus = '';
		if(i < 0) { minus = '-'; }
		i = Math.abs(i);
		var n = new String(i);
		var a = [];
		var len = 3;
		
		while(n.length > len)
		{
				var nn = n.substr(n.length-len);
				a.unshift(nn);
				n = n.substr(0,n.length-len);
                
				//len = 2;
		}
		if(n.length > 0) { a.unshift(n); }
		n = a.join(delimiter);
		if(typeof(d) != "undefined")
		{
			if(d.length < 1) { amount = n; }
			else { amount = n + '.' + d; }
		}
		else
		{
			amount = n; 
		}
		amount = minus + amount;
		return amount;
}
/*function FormatCurrency(fltCurrency)
{
	var arrCurrency = new Array();
	var origCurrency = fltCurrency + "";
	var intPart;
	var strReturnValue;
	if(origCurrency.indexOf(".")> -1
	{
		arrCurrency = origCurrency.split(".");
		intPart = arrCurrency[0];
	}
	else
	{
		intPart = origCurrency;
	}
	
	switch(intPart.length)
	{
		case 0:
		case 1:
		case 2:
		case 3:
			strReturnValue = intPart;
			break;
		case 4:
			strReturnValue = intPart.substring(;
			break;
		case 5:
			strReturnValue = intPart;
			break;
		case 6:
			strReturnValue = intPart;
			break;
		case 7:
			strReturnValue = intPart;
			break;
		case 8:
			strReturnValue = intPart;
			break;
		case 9:
			strReturnValue = intPart;
			break;
		case 10:
			strReturnValue = intPart;
			break;
		
	
	}
	if(intPart.length <= 3)
	{
		strReturnValue = intPart;
	}
	else if(intPart.length >= 4 && intPart.length <= 6)
	{
		strReturnValue = 
	}
	else if(intPart.length >= 7 && intPart.length <= 9)
	{
		
	}
	
	
	if(origCurrency.indexOf(".")> -1
	{
		
	}
	
}*/