function doSum(a){ 
   a.value = check(a.value);
}
function check(a) {
   var b = "";
   for(i=0;i<=a.length;i++){
   var u = a.charAt(i);
      if((u>="0"&&u<="9")||u=="." ){ 
   var b = b + u;}
   }
return b;
}

//------------------------------------


function checkNumber(quest,input, min, max, msg)
{
    var str = input.value;
    for (var i = 0; i < str.length; i++) {
        var ch = str.substring(i, i + 1)
        if ((ch < "0" || "9" < ch) && ch != '.') {
            alert(msg);
            return false;
        }
    }
    if(input.value!="")
    {
    var num = 0 + str
    if (num < min || max < num) {
    var sendq = "You have entered " + input.value + ". Please enter a number between " + min + " and " + max + ".";
  alert(sendq);

        return false;
    }
    input.value = str;
    return true;
    }
}

//------------------------------------
function computeField(quest,input,min,max,msage)
{
// calls upon the function which calculates the results of the entered data.  
//For example - Mortgage Payment, GDS and TDS ratios, and Loan to 
//Value. This function
// is executed everytime a value is changed in a field.
       doSum(input);
           if (input.value != null && input.value.length != 0)
        input.value = "" + eval(input.value);
 checkNumber(quest,input,min,max,msage); 
   
}        

//------------------------------------
function roundPen(n)
{
if(n > 0){
pennies = n*100;
pennies = Math.round(pennies);
strPennies = "" + pennies;
len = strPennies.length;

return strPennies.substring(0, len - 2) + "." + strPennies.substring(len -2, len);
}
else return 0;
}

//------------------------------------
function calcMax(){
var errorMsg;


if((document.rentcalc.monpay.value == null || document.rentcalc.monpay.value.length == 0) || (document.rentcalc.monpay.value < 200 || document.rentcalc.monpay.value > 10000)){
errorMsg = 'Please enter your Monthly Payment as a number between 200 and 10000.';}


if ((document.rentcalc.downp.value == null || document.rentcalc.downp.value.length == 0) || (document.rentcalc.downp.value < 2000 || document.rentcalc.downp.value > 1000000)){
errorMsg ='Please enter your Downpayment as a number between 2000 and 1000000.';}


if ((document.rentcalc.protax.value == null || document.rentcalc.protax.value.length == 0) || (document.rentcalc.protax.value < 300 || document.rentcalc.protax.value > 10000)){
errorMsg ='Please enter your Property Tax as a number between 300 and 10000.';}


if ((document.rentcalc.rate.value == null || document.rentcalc.rate.value.length == 0) || (document.rentcalc.rate.value < 2  || document.rentcalc.rate.value > 25)){
errorMsg ='Please enter your Interest Rate as a number between 2 and 25.';}


if(document.rentcalc.incr.selectedIndex == 0){
errorMsg ='Please select the annual increase value for the home';}


if ((document.rentcalc.rent.value < 0  || document.rentcalc.rent.value.length == 0) || (document.rentcalc.rent.value < 0  || document.rentcalc.rent.value > 5000)){
errorMsg ='Please enter your Monthly Rent a number between 0 and 5000.';}


if(document.rentcalc.compare.selectedIndex == 0){
errorMsg ='Please select the number of Years for Comparison';}


if (!errorMsg) {     
    var RATE = document.rentcalc.rate.value/100;
    var downp = document.rentcalc.downp.value*1.0;
    var tax = document.rentcalc.protax.value;
    var incr = document.rentcalc.incr[document.rentcalc.incr.selectedIndex].value;
    var monpay = document.rentcalc.monpay.value;
    var rent = document.rentcalc.rent.value;
    var compare = document.rentcalc.compare[document.rentcalc.compare.selectedIndex].value;
    var compound = 2/12; 
    var monTime = 25 * 12;
    var yrRate = RATE/2;
    var rdefine    = Math.pow((1.0 + yrRate),compound)-1.0;
    var purchcompound = Math.pow((1.0 + rdefine),monTime);

    var a1 = monpay - (tax/12);
    var b1 = (0+((a1*(purchcompound-1.0))/rdefine))/purchcompound;
    var c1 = downp+b1;
    var res = (b1*(Math.pow((1.0 + rdefine),(12*compare)))) -  ((a1 * ((Math.pow((1.0 + rdefine),(12*compare))) - 1.0))/rdefine);
    var d1 = b1-res;
    var e1 = c1*((Math.pow((1+incr),compare))-1);
    var f1 = monpay - rent;
    var g1 = (downp+(f1*12))*(Math.pow((1.04),compare))-downp;
    var h1 = d1+e1;

    var decide =  (h1>g1) ? 'Buy' : 'Continue to Rent';
    var words =  (h1>g1) ? 'greater' : 'less';

    document.getElementById('tdresults').innerHTML = ''; //clearing it first, incase used multple times
    document.getElementById('tdresults').innerHTML += '<h1 class="green">You Should '+decide+'!</h1>';
    document.getElementById('tdresults').innerHTML += '<p>It looks like you should <strong class="text-green">'+decide+'</strong> based on the assumptions you have given us.</p>';
    document.getElementById('tdresults').innerHTML += '<p>Why? If you buy for <span class="text-green">$'+roundPen(c1)+'</span> (the maximum you would qualify for) you will pay down your mortgage of <span class="text-green">$'+roundPen(b1)+'</span> by <span class="text-green">$'+roundPen(d1)+'</span> over '+compare+' year(s) with your Principal and Interest payments of <span class="text-green">$'+roundPen(a1)+'</span> per month, plus your property will increase in value by <span class="text-green">$' +roundPen(e1)+'</span> for a total investment growth of <span class="text-green">$'+roundPen(h1)+'</span>.';
    document.getElementById('tdresults').innerHTML += '<p>This total is <span class="text-green">'+words+'</span> than your total investment growth from renting, which is approximately <span class="text-green">$'+roundPen(g1)+'</span> after '+compare+' year(s). ';
    document.getElementById('tdresults').innerHTML += 'This was calculated by growing the monthly savings from renting (<span class="text-green">$'+roundPen(f1)+'</span>) plus your current downpayment of <span class="text-green">$'+roundPen(downp)+'</span> at a standard after-tax rate of <span class="text-green">'+RATE*100+'%</span> per annum.';
    
    
    document.getElementById('trresults').style.display = ''; //show tr
    
    return false;

}
else{
    alert(errorMsg);
    return false;
}

return false;

}//end calcMax
