//REALOGY MORTGAGE PROVIDED CALCULATION FUNCTIONS

var g_pIncomeSlider = null;
var g_pExtraincomeSlider = null;
var g_pDebtSlider = null;
var g_pClosingSlider = null;
var g_pInterestSlider = null;
var g_pTermSlider = null;

var g_bInInitialize = false;


//RESULTS VARIABLES
var moPay = "", loanAmt="", purPrice="", downPymt="", cashDown="", closCost="", LoanAmount="", debtRatio, x = "";

//GLOBAL VARIABLES
var i, ii, iii = 0;

var g_bGraphReady = false;

function saveCalculatorToMyC21(pObj){
    if( g_lMyC21Account == null ) {
        if( !processMyC21Account() ){
            //not logged in, display login form
            displayMyC21Login(pObj);
            return false;
        }
    }

    var fm = document.affordability;
    if( checkForm(fm, true) ){
       var affordIncome   = cleanAndParseInt(fm.afford_income.value);
       var extraIncome    = cleanAndParseInt(fm.afford_extraincome.value);
       var affordDebt     = cleanAndParseInt(fm.afford_debt.value);
       var affordClosing  = cleanAndParseInt(fm.afford_closing.value);
       var affordInterest = cleanAndParseFloat(fm.afford_interest.value);
       var affordTerm     = fm.afford_term.options[fm.afford_term.selectedIndex].value; //from select input...no need to clean

       var parms = 'calctype=A&grossincome='+ escape(affordIncome) +'&extraincome='+ escape(extraIncome) +'&debts='+ escape(affordDebt) +'&downpayment='+ escape(affordClosing) +'&interestrate='+ escape(affordInterest) +'&loanterm='+ escape(affordTerm);

       displayMyC21SaveItemPopup(pObj, 'type=C&'+ parms, 'save_img');
       //dcsMultiTrack('WT.cg_n', 'Engage', 'WT.z_engage_type', 'Engage', 'WT.z_engage_event', 'Save Search');
    }
    return false;
}


function calculate( bShowErrors ) 
{
   fm = document.affordability;

//Validations
   var message = new Array();
   var errorMsg = "";
   
   message[0] = "Please enter the Monthly Net Income.\n";
   message[1] = "The Monthly Net Income should be free of special\n characters or letters.\n";
   message[2] = "The Additional Monthly Income should be free of special\n characters or letters.\n";
   message[3] = "The Monthly Debt should be free of special\n characters or letters.\n";
   message[4] = "The Expected Down Payment should be free of special\n characters or letters.\n";
   message[5] = "Please enter the Interest Rate.\n";
   message[6] = "The Interest Rate should be free of special\n characters or letters.\n";

   var affordIncome   = cleanInput(fm.afford_income.value);
   var extraIncome    = cleanInput(fm.afford_extraincome.value);
   var affordDebt     = cleanInput(fm.afford_debt.value);
   var affordClosing  = cleanInput(fm.afford_closing.value);
   var affordInterest = cleanInput(fm.afford_interest.value);
   var affordTerm     = fm.afford_term.options[fm.afford_term.selectedIndex].value; //from select input...no need to clean

   errorMsg += validateNumberValue(affordIncome, message[0], message[1]);
   errorMsg += validateEmptyOrNumberValue(extraIncome,   message[2]);
   errorMsg += validateEmptyOrNumberValue(affordDebt,    message[3]);
   errorMsg += validateEmptyOrNumberValue(affordClosing, message[4]);
   errorMsg += validateNumberValue(affordInterest, message[5], message[6]);

   if (errorMsg.length != 0) {
      if ( bShowErrors ) {
         alert("Before continuing, the following fields require attention:\n\n" + errorMsg);
      }
      return false;
   }
//End of Validations


   var vin1 = new Number (affordIncome);
   var vin2 = new Number (extraIncome);
   var vin3 = new Number (affordDebt);
   var vin4 = new Number (affordClosing);
   var vin6 = new Number (.01); //This is the annual tax rate, ie. 1%
   var vin7 = new Number (("0")/100); //????
   var vin8 = new Number (affordTerm);
   var vin9 = new Number ((affordInterest)/100);

   var tmpay = 0;

   var a = (vin1.valueOf() + vin2.valueOf()) * 0.28;
   var b = (vin1.valueOf() + vin2.valueOf()) * 0.36 - vin3.valueOf();
   var tmpay = Math.min(a.valueOf(),b.valueOf());

   if (vin4.valueOf() >=0 && vin4.valueOf()<=15000) {
      var ltv = 0.95 ;
   } else if (vin4.valueOf() >=15001 && vin4.valueOf()<=30000) {
      var ltv = 0.90 ;
   } else if (vin4.valueOf() >=30001 && vin4.valueOf()<= 49999) {
      var ltv = 0.85 ;
   } else if (vin4.valueOf() >=50000) {
      var ltv = 0.80 ;
   }
   var lookup = 0;
   if (ltv == 0.95) {
      if (vin8==15) lookup = 0.0077;
      if (vin8==20) lookup = 0.0081;
      if (vin8==30) lookup = 0.0090;
   } else if (ltv == 0.90) {
      if (vin8==15) lookup = 0.0056;
      if (vin8==20) lookup = 0.0065;
      if (vin8==30) lookup = 0.0078;
   } else if (ltv == 0.85) {
      if (vin8==15) lookup = 0.0023;
      if (vin8==20) lookup = 0.0037;
      if (vin8==30) lookup = 0.0052;
   } else if (ltv == 0.80) {
   }

   var vout2 = 
   (  tmpay.valueOf() - (  vin4.valueOf() * ( (vin6.valueOf() + vin7.valueOf()) / 12 ) ) )
   /
   (  (  (vin9.valueOf() / 12)
         / (  (1 - Math.pow((1 + (vin9.valueOf()/12)),-(vin8.valueOf() * 12)) ) )
      ) 
      + ( (vin7.valueOf() + vin6.valueOf() + lookup.valueOf())/12 )
   );

   if (vout2 < 0) {
      fm.out_propvalue.value = 0.00;
      fm.out_mortgageamount.value = 0.00;
      //fm.out3.value = 0.00;
      fm.out_pmi.value = 0.00;
      fm.out_tax.value = 0.00;
      fm.out_monthlypayment.value = 0.00;
   } else {
      var tmparr = vout2.valueOf().toString().split(".");
      if (tmparr[1] != null) {
         var tmpdec = tmparr[1].substring(0,2);
      } else {
         var tmpdec = "00";
      }
      if (tmparr[0].length < 4) {
         fm.out_mortgageamount.value = tmparr[0] + "." + tmpdec;
      }
      if (tmparr[0].length == 4) {
         var tmpnum1 = tmparr[0].substring(0,1);
         var tmpnum2 = tmparr[0].substring(1,4);
         fm.out_mortgageamount.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 5) {
         var tmpnum1 = tmparr[0].substring(0,2);
         var tmpnum2 = tmparr[0].substring(2,5);
         fm.out_mortgageamount.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 6) {
         var tmpnum1 = tmparr[0].substring(0,3);
         var tmpnum2 = tmparr[0].substring(3,6);
         fm.out_mortgageamount.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 7) {
         var tmpnum1 = tmparr[0].substring(0,1);
         var tmpnum2 = tmparr[0].substring(1,4);
         var tmpnum3 = tmparr[0].substring(4,7);
         fm.out_mortgageamount.value = tmpnum1 + "," + tmpnum2 + "," + tmpnum3 + "." + tmpdec;
      }
      if (tmparr[0].length == 8) {
         var tmpnum1 = tmparr[0].substring(0,2);
         var tmpnum2 = tmparr[0].substring(2,5);
         var tmpnum3 = tmparr[0].substring(5,8);
         fm.out_mortgageamount.value = tmpnum1 + "," + tmpnum2 + "," + tmpnum3 + "." + tmpdec;
      }
      vout1 = vout2.valueOf() + vin4.valueOf();
      var tmparr = vout1.valueOf().toString().split(".");
      if (tmparr[1] != null) {
         var tmpdec = tmparr[1].substring(0,2);
      } else {
         var tmpdec = "00";
      }
      if (tmparr[0].length < 4) {
         fm.out_propvalue.value = tmparr[0] + "." + tmpdec;
      }
      if (tmparr[0].length == 4) {
         var tmpnum1 = tmparr[0].substring(0,1);
         var tmpnum2 = tmparr[0].substring(1,4);
         fm.out_propvalue.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 5) {
         var tmpnum1 = tmparr[0].substring(0,2);
         var tmpnum2 = tmparr[0].substring(2,5);
         fm.out_propvalue.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 6) {
         var tmpnum1 = tmparr[0].substring(0,3);
         var tmpnum2 = tmparr[0].substring(3,6);
         fm.out_propvalue.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 7) {
         var tmpnum1 = tmparr[0].substring(0,1);
         var tmpnum2 = tmparr[0].substring(1,4);
         var tmpnum3 = tmparr[0].substring(4,7);
         fm.out_propvalue.value = tmpnum1 + "," + tmpnum2 + "," + tmpnum3 + "." + tmpdec;
      }
      if (tmparr[0].length == 8) {
         var tmpnum1 = tmparr[0].substring(0,2);
         var tmpnum2 = tmparr[0].substring(2,5);
         var tmpnum3 = tmparr[0].substring(5,8);
         fm.out_propvalue.value = tmpnum1 + "," + tmpnum2 + "," + tmpnum3 + "." + tmpdec;
      }
      var vout3 = vout2.valueOf() * ((vin9.valueOf()/12)/(1-Math.pow(1+(vin9.valueOf()/12),-(vin8.valueOf()*12))));
      var tmparr = vout3.valueOf().toString().split(".");
      if (tmparr[1] != null) {
         var tmpdec = tmparr[1].substring(0,2);
      } else {
         var tmpdec = "00";
      }
      /*if (tmparr[0].length < 4) {
       fm.out3.value = tmparr[0] + "." + tmpdec;
      } */
      if (tmparr[0].length == 4) {
         var tmpnum1 = tmparr[0].substring(0,1);
         var tmpnum2 = tmparr[0].substring(1,4);
         //fm.out3.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 5) {
         var tmpnum1 = tmparr[0].substring(0,2);
         var tmpnum2 = tmparr[0].substring(2,5);
         //fm.out3.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 6) {
         var tmpnum1 = tmparr[0].substring(0,3);
         var tmpnum2 = tmparr[0].substring(3,6);
         //fm.out3.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 7) {
         var tmpnum1 = tmparr[0].substring(0,1);
         var tmpnum2 = tmparr[0].substring(1,4);
         var tmpnum3 = tmparr[0].substring(4,7);
         //fm.out3.value = tmpnum1 + "," + tmpnum2 + "," + tmpnum3 + "." + tmpdec;
      }
      if (tmparr[0].length == 8) {
         var tmpnum1 = tmparr[0].substring(0,2);
         var tmpnum2 = tmparr[0].substring(2,5);
         var tmpnum3 = tmparr[0].substring(5,8);
         //fm.out3.value = tmpnum1 + "," + tmpnum2 + "," + tmpnum3 + "." + tmpdec;
      }
      var vout4 = vout2.valueOf() * (lookup.valueOf()/12);
      var tmparr = vout4.valueOf().toString().split(".");
      if (tmparr[1] != null) {
         var tmpdec = tmparr[1].substring(0,2);
      } else {
         var tmpdec = "00";
      }
      if (tmparr[0].length < 4) {
         fm.out_pmi.value = tmparr[0] + "." + tmpdec;
      }
      if (tmparr[0].length == 4) {
         var tmpnum1 = tmparr[0].substring(0,1);
         var tmpnum2 = tmparr[0].substring(1,4);
         fm.out_pmi.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 5) {
         var tmpnum1 = tmparr[0].substring(0,2);
         var tmpnum2 = tmparr[0].substring(2,5);
         fm.out_pmi.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 6) {
         var tmpnum1 = tmparr[0].substring(0,3);
         var tmpnum2 = tmparr[0].substring(3,6);
         fm.out_pmi.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 7) {
         var tmpnum1 = tmparr[0].substring(0,1);
         var tmpnum2 = tmparr[0].substring(1,4);
         var tmpnum3 = tmparr[0].substring(4,7);
         fm.out_pmi.value = tmpnum1 + "," + tmpnum2 + "," + tmpnum3 + "." + tmpdec;
      }
      if (tmparr[0].length == 8) {
         var tmpnum1 = tmparr[0].substring(0,2);
         var tmpnum2 = tmparr[0].substring(2,5);
         var tmpnum3 = tmparr[0].substring(5,8);
         fm.out_pmi.value = tmpnum1 + "," + tmpnum2 + "," + tmpnum3 + "." + tmpdec;
      }

      var vout5 = vout1.valueOf() * (vin6.valueOf()/12);

      var tmparr = vout5.valueOf().toString().split(".");
      if (tmparr[1] != null) {
         var tmpdec = tmparr[1].substring(0,2);
      } else {
         var tmpdec = "00";
      }
      if (tmparr[0].length < 4) {
         fm.out_tax.value = tmparr[0] + "." + tmpdec;
      }
      if (tmparr[0].length == 4) {
         var tmpnum1 = tmparr[0].substring(0,1);
         var tmpnum2 = tmparr[0].substring(1,4);
         fm.out_tax.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 5) {
         var tmpnum1 = tmparr[0].substring(0,2);
         var tmpnum2 = tmparr[0].substring(2,5);
         fm.out_tax.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 6) {
         var tmpnum1 = tmparr[0].substring(0,3);
         var tmpnum2 = tmparr[0].substring(3,6);
         fm.out_tax.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 7) {
         var tmpnum1 = tmparr[0].substring(0,1);
         var tmpnum2 = tmparr[0].substring(1,4);
         var tmpnum3 = tmparr[0].substring(4,7);
         fm.out_tax.value = tmpnum1 + "," + tmpnum2 + "," + tmpnum3 + "." + tmpdec;

      }
      if (tmparr[0].length == 8) {
         var tmpnum1 = tmparr[0].substring(0,2);
         var tmpnum2 = tmparr[0].substring(2,5);
         var tmpnum3 = tmparr[0].substring(5,8);
         fm.out_tax.value = tmpnum1 + "," + tmpnum2 + "," + tmpnum3 + "." + tmpdec;
      }
      var vout7 = vout3.valueOf() + vout4.valueOf() + vout5.valueOf();
      var tmparr = vout7.valueOf().toString().split(".");
      if (tmparr[1] != null) {
         var tmpdec = tmparr[1].substring(0,2);
      } else {
         var tmpdec = "00";
      }
      if (tmparr[0].length < 4) {
         fm.out_monthlypayment.value = tmparr[0] + "." + tmpdec;
      }
      if (tmparr[0].length == 4) {
         var tmpnum1 = tmparr[0].substring(0,1);
         var tmpnum2 = tmparr[0].substring(1,4);
         fm.out_monthlypayment.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 5) {
         var tmpnum1 = tmparr[0].substring(0,2);
         var tmpnum2 = tmparr[0].substring(2,5);
         fm.out_monthlypayment.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 6) {
         var tmpnum1 = tmparr[0].substring(0,3);
         var tmpnum2 = tmparr[0].substring(3,6);
         fm.out_monthlypayment.value = tmpnum1 + "," + tmpnum2 + "." + tmpdec;
      }
      if (tmparr[0].length == 7) {
         var tmpnum1 = tmparr[0].substring(0,1);
         var tmpnum2 = tmparr[0].substring(1,4);
         var tmpnum3 = tmparr[0].substring(4,7);
         fm.out_monthlypayment.value = tmpnum1 + "," + tmpnum2 + "," + tmpnum3 + "." + tmpdec;
      }
      if (tmparr[0].length == 8) {
         var tmpnum1 = tmparr[0].substring(0,2);
         var tmpnum2 = tmparr[0].substring(2,5);
         var tmpnum3 = tmparr[0].substring(5,8);
         fm.out_monthlypayment.value = tmpnum1 + "," + tmpnum2 + "," + tmpnum3 + "." + tmpdec;
      }
   }
   return true;
}

function showResults()
{
   fm = document.affordability;
   var strPropvalue =  AddCommas(stringReplaceAll(",", "", fm.out_propvalue.value));
   var strMortgageamount = AddCommas(stringReplaceAll(",", "", fm.out_mortgageamount.value));
   var strMonthlypayment = AddCommas(stringReplaceAll(",", "", fm.out_monthlypayment.value));
   var strPmi = AddCommas(stringReplaceAll(",", "", fm.out_pmi.value));
   var strTax = AddCommas(stringReplaceAll(",", "", fm.out_tax.value));

   if( strMonthlypayment == '0' ) {
      clearResults();
      var objResults = document.getElementById('objResults');
      if ( objResults != null ) {
         objResults.innerHTML = 'Prior to performing calculations, this calculator verifies that your debt does not exceed 35% of your income. The amounts you entered exceed this debt-to-income ratio and therefore we are unable to present you with a maximum loan amount.  Please check that you have not included housing costs in your monthly debts.';
      }
      return;
   }

   //BUILDS RESULTS
   var changeMsg =
   "<p><FONT CLASS=\"basic\"><b>We estimate the maximum amount you can afford to be:</b></FONT>" + 
   "<TABLE class=\"calculatorresultstable\" CELLPADDING=\"0\" CELLSPACING=\"0\" WIDTH=\"0\">" +
   "  <TR VALIGN=\"top\">" +
   "    <TD VALIGN=\"MIDDLE\"><FONT CLASS=\"basic\">Monthly payment</FONT></TD>" +
   "    <TD ALIGN=\"right\" VALIGN=\"MIDDLE\"><FONT CLASS=\"basic\">" + "$" + strMonthlypayment + "</FONT></TD>" +
   "  </TR>" +
   "  <TR VALIGN=\"top\">" +
   "    <TD VALIGN=\"MIDDLE\"><FONT CLASS=\"basic\">Loan amount</FONT></TD>" +
   "    <TD ALIGN=\"right\" VALIGN=\"MIDDLE\"><FONT CLASS=\"basic\">" + "$" + strMortgageamount + "</FONT></TD>" +
   "  </TR>" +
   "  <TR VALIGN=\"top\">" +
   "    <TD VALIGN=\"MIDDLE\"><FONT CLASS=\"basic\">Home purchase price</FONT></TD>" +
   "    <TD ALIGN=\"right\" VALIGN=\"MIDDLE\"><FONT CLASS=\"basic\">" + "$" + strPropvalue + "</FONT></TD>" +
   "  </TR>" +
   "  <TR VALIGN=\"top\">" +
   "    <TD VALIGN=\"MIDDLE\"><FONT CLASS=\"basic\">Monthly Private Mortgage Insurance</FONT></TD>" +
   "    <TD ALIGN=\"right\" VALIGN=\"MIDDLE\"><FONT CLASS=\"basic\">" + "$" + strPmi + "</FONT></TD>" +
   "  </TR>" +
   "  <TR VALIGN=\"top\">" +
   "    <TD VALIGN=\"MIDDLE\"><FONT CLASS=\"basic\">Monthly Property Tax</FONT></TD>" +
   "    <TD ALIGN=\"right\" VALIGN=\"MIDDLE\"><FONT CLASS=\"basic\">" + "$" + strTax +  "</FONT></TD>" +
   "  </TR>" +
   "</TABLE>" + 
   "<p><B>Note:</B> The results generated by this calculator do not include any Homeowner's Insurance payments and the results are not guaranteed. Such results are meant only as a general guideline for the user and should not be relied upon in connection with any particular transaction or situation. If you plan to purchase a home, we recommend you consult with a mortgage professional for a more thorough analysis of your current situation.</FONT>";

   var objResults = document.getElementById('objResults');
   if ( objResults != null ) {
      objResults.innerHTML = changeMsg;
   }
   DrawChart();

}

function checkForm(form, bShowErrorMessages)
{
   var i;
   var errorMsg = "";
   var income, debt, closing = "";
   var message = new Array();
   var inputs = new Array(form.length);

   for (i = 0; i < form.length; i++) {
      inputs[i] = form.elements[i].name;
   }

   clearResults();

   for (i = 0; i < form.length; i++) {
      if (inputs[i] == "afford_income")
         income = i;
      else if (inputs[i] == "afford_debt")
         debt = i;
      else if (inputs[i] == "afford_closing")
         closing = i;
   }

   message[0] = "Please enter your annual income.\n";
   message[1] = "The amount entered for your annual income should be free of special characters or letters.\n";
   message[2] = "Your annual income should be $0 or more and less than $1,000,000.\n"
   message[3] = "Please enter the amount of total monthly debt.\n";
   message[4] = "The amount for total monthly debt should be free of special characters or letters.\n";
   message[5] = "The amount for total monthly debt should be $0 or more and less than $1,000,000.\n";
   message[6] = "Please enter the amount of cash down and downpayment.\n";
   message[7] = "The amount for cash down and downpayment should be free of special characters or letters.\n";
   message[8] = "The value for cash down and downpayment should be between $0 and $1,000,000.\n"

   var incomeValue = cleanInput(form.elements[income].value);
   var debtValue = cleanInput(form.elements[debt].value);
   var closingValue = cleanInput(form.elements[closing].value);
   errorMsg += validateRangedNumberValue(incomeValue,  message[0], message[1], message[2], 0, 999999);
   errorMsg += validateRangedNumberValue(debtValue,    message[3], message[4], message[5], 0, 999999);
   errorMsg += validateRangedNumberValue(closingValue, message[6], message[7], message[8], 0, 999999);

   //No need to return anything here
   if (errorMsg.length == 0) {
      //If there's no error message, calculate
      if ( calculate(true) ) {
         showResults();
      }
      return true;
   } else {
      //If there's an error message, just show it
      alert("Before continuing, the following fields require attention:\n\n" + errorMsg);
   }
   return false;
}

function clearResults()
{
   var objResults = document.getElementById('objResults');
   if ( objResults != null ) {
      objResults.innerHTML = "";
   }
   ProxySimpleBarGraph_Clear();
   ProxySimpleBarGraph_ShowImage(true);
}


function DrawChart()
{   
   ProxySimpleBarGraph_Clear();
   ProxySimpleBarGraph_ShowImage(true);
   fm = document.affordability;
   if ( fm.out_propvalue.value == '') {
      return;
   }
   if ( fm.afford_closing.value == '') {
      return;
   }
   if ( !g_bGraphReady ) {
      return;
   }

   var fHomePrice = parseFloat(stringReplaceAll(",", "", fm.out_propvalue.value));
   var fDownPayment = parseFloat(stringReplaceAll(",", "", fm.afford_closing.value));

   var fDownPaymentIncrement = 0;
   var fHomePriceIncrement = 0;
   var fHomePriceMid = 0;
   var fDownPaymentMid = 0;
   
   if ( fDownPayment > 50000 ) {
      fDownPaymentIncrement = 10000;
   } else if ( fDownPayment > 10000 ) {
      fDownPaymentIncrement = 5000;
   } else {
      fDownPaymentIncrement = 1000;
   }

   fHomePriceIncrement = (fDownPaymentIncrement);

   fDownPaymentMid = fDownPayment.toNearest(fDownPaymentIncrement);
   fHomePriceMid = fHomePrice.toNearest(fHomePriceIncrement);

   var fDownPaymentMin = fDownPaymentMid - (2*fDownPaymentIncrement);
   var fHomePriceMin = fHomePriceMid - (3*fHomePriceIncrement);



   if ( fDownPaymentMin < 0 ) {
      fDownPaymentMid = 2 * fDownPaymentIncrement;
      fDownPaymentMin = 0;
   }
   if ( fHomePriceMin < 0 ) {
      fHomePriceMid = 2 * fHomePriceIncrement;
      fHomePriceMin = 0;
   }

   var oVert = new Object();
   oVert['padding'] = 30;
   oVert['offset'] = 10;
   oVert['min'] = fHomePriceMin;
   oVert['increment'] = fHomePriceIncrement;
   oVert['legend'] = '<font color="#FFFFFF" size="13" face="ARIAL"><b>Home Price</b></font>';
   oVert['label_prefix'] = '$';
   oVert['ticks'] = 7;
   oVert['grid'] = true;
   oVert['css'] = ".label { font-family: Arial; font-size: 12; font-weight: bold; color: #FFFFFF; text-align: right;}";

   var oHorz = new Object();
   oHorz['padding'] = 80;
   oHorz['offset'] = 30;   
   oHorz['min'] = fDownPaymentMin;
   oHorz['increment'] = fDownPaymentIncrement;
   oHorz['legend'] = '<font color="#000000" size="13" face="ARIAL"><b>Cash Down</b></font>';
   oHorz['label_prefix'] = '$';
   oHorz['ticks'] = 5;
   oHorz['grid'] = false;
   oHorz['css'] = ".label { font-family: Arial; font-size: 12; font-weight: bold; color: #000000; text-align: center;}";
   ProxySimpleBarGraph_Setup( oHorz, oVert );


   xData1 = new Object();
   xData1['color1'] = 0xFFFB01;                   
   xData1['color2'] = 0xFF9600; 
   xData1['width'] = 40;
   xData1['offset'] = 0;

   xData2 = new Object();
   xData2['color1'] = 0xFC9001;                   
   xData2['color2'] = 0x971200; 
   xData2['width'] = 40;
   xData2['offset'] = 0;

   var strSave = document.affordability.afford_closing.value;
   
   document.affordability.afford_closing.value = fDownPaymentMid - (fDownPaymentIncrement*2);
   if ( calculate(false) ) {
      xData1[0] = parseFloat(stringReplaceAll(",", "", fm.out_propvalue.value));
   }

   document.affordability.afford_closing.value = fDownPaymentMid - (fDownPaymentIncrement);
   if ( calculate(false) ) {
      xData1[1] = parseFloat(stringReplaceAll(",", "", fm.out_propvalue.value));
   }

   document.affordability.afford_closing.value = fDownPaymentMid;
   if ( calculate(false) ) {
      xData1[2] = parseFloat(stringReplaceAll(",", "", fm.out_propvalue.value));
      xData2[2] = xData1[2];
   }

   document.affordability.afford_closing.value = fDownPaymentMid + (fDownPaymentIncrement);
   if ( calculate(false) ) {
      xData1[3] = parseFloat(stringReplaceAll(",", "", fm.out_propvalue.value));
   }


   document.affordability.afford_closing.value = fDownPaymentMid + (fDownPaymentIncrement*2);
   if ( calculate(false) ) {
      xData1[4] = parseFloat(stringReplaceAll(",", "", fm.out_propvalue.value));
   }

   document.affordability.afford_closing.value = strSave;

   ProxySimpleBarGraph_Plot( xData1 );
   ProxySimpleBarGraph_Plot( xData2 );

   ProxySimpleBarGraph_ShowImage(false);

   setSearchRanges(fHomePriceMin, fHomePriceMin + fHomePriceIncrement * 8);

}

function SimpleBarGraph_Ready()
{
   ProxySimpleBarGraph_SetImage('/images/calculator/default_affordability.jpg');
   ProxySimpleBarGraph_ShowImage(true);

   g_bGraphReady = true;
}

function UpdateCalculatorResults() {
   if( !g_bInInitialize )
      checkForm(document.forms.affordability);
}

function onChangeIncomeSlider( pSlider ) {
   onMovingIncomeSlider( pSlider );
   UpdateCalculatorResults();
}
function onMovingIncomeSlider( pSlider ) {
   var iValue = pSlider.GetLowValue();
   document.getElementById('affordcalclabel_income').innerHTML = '$'+AddCommas(iValue);
   document.getElementById('afford_income').value = AddCommas(iValue);
}

function onChangeExtraincomeSlider( pSlider ) {
   onMovingExtraincomSlider( pSlider );
   UpdateCalculatorResults();
}
function onMovingExtraincomSlider( pSlider ) {
   var iValue = pSlider.GetLowValue();
   document.getElementById('affordcalclabel_extraincome').innerHTML = '$'+AddCommas(iValue);
   document.getElementById('afford_extraincome').value = AddCommas(iValue);
}

function onChangeDebtSlider( pSlider ) {
   onMovingDebtSlider( pSlider );
   UpdateCalculatorResults();
}
function onMovingDebtSlider( pSlider ) {
   var iValue = pSlider.GetLowValue();
   document.getElementById('affordcalclabel_debt').innerHTML = '$'+AddCommas(iValue);
   document.getElementById('afford_debt').value = AddCommas(iValue);
}

function onChangeClosingSlider( pSlider ) {
   onMovingClosingSlider( pSlider );
   UpdateCalculatorResults();
}
function onMovingClosingSlider( pSlider ) {
   var iValue = pSlider.GetLowValue();
   document.getElementById('affordcalclabel_closing').innerHTML = '$'+AddCommas(iValue);
   document.getElementById('afford_closing').value = AddCommas(iValue);
}

function onChangeInterestSlider( pSlider ) {
   onMovingInterestSlider( pSlider );
   UpdateCalculatorResults();
}
function onMovingInterestSlider( pSlider ) {
   var iValue = pSlider.GetLowValue();
   document.getElementById('affordcalclabel_interest').innerHTML = iValue + '%';
   document.getElementById('afford_interest').value = iValue;
}

function onChangeTermSlider( pSlider ) {
   onMovingTermSlider( pSlider );
   UpdateCalculatorResults();
}
function onMovingTermSlider( pSlider ) {
   var iValue = pSlider.GetLowValue();
   document.getElementById('affordcalclabel_term').innerHTML = iValue + ' years';
   document.getElementById('afford_term').value = iValue;
}



function enableAffordExplore()
{
   g_bInInitialize = true;

   SetOnEmpty('afford_income', '4,166');     
   SetOnEmpty('afford_extraincome', 0);
   SetOnEmpty('afford_debt', 500);       
   SetOnEmpty('afford_closing', '10,000');    
   SetOnEmpty('afford_interest', 6.25);   
   SetOnEmpty('afford_term', 30);       

   var iIncome      = GetCleanedHiddenFieldIntValue('afford_income');
   var iExtraincome = GetCleanedHiddenFieldIntValue('afford_extraincome');
   var iDebt        = GetCleanedHiddenFieldIntValue('afford_debt');
   var iClosing     = GetCleanedHiddenFieldIntValue('afford_closing');
   var fInterest    = GetCleanedHiddenFieldFloatValue('afford_interest');
   var iTerm        = GetCleanedHiddenFieldIntValue('afford_term');

   g_pIncomeSlider.SetValues(iIncome, 0, true);
   g_pExtraincomeSlider.SetValues(iExtraincome, 0, true);
   g_pDebtSlider.SetValues(iDebt, 0, true);
   g_pClosingSlider.SetValues(iClosing, 0, true);
   g_pInterestSlider.SetValues(fInterest, 0, true);
   g_pTermSlider.SetValues(iTerm, 0, true);

   g_bInInitialize = false;
   UpdateCalculatorResults();

}

function InitializeAffordabilityCalculator()
{
   var iIncome      = GetCleanedHiddenFieldIntValue('afford_income');
   var iExtraincome = GetCleanedHiddenFieldIntValue('afford_extraincome');
   var iDebt        = GetCleanedHiddenFieldIntValue('afford_debt');
   var iClosing     = GetCleanedHiddenFieldIntValue('afford_closing');
   var fInterest    = GetCleanedHiddenFieldFloatValue('afford_interest');
   var iTerm        = GetCleanedHiddenFieldIntValue('afford_term');

   var pDivIncome      = document.getElementById('affordcalcslide_income');     
   var pDivExtraincome = document.getElementById('affordcalcslide_extraincome');
   var pDivDebt        = document.getElementById('affordcalcslide_debt');       
   var pDivClosing     = document.getElementById('affordcalcslide_closing');    
   var pDivInterest    = document.getElementById('affordcalcslide_interest');   
   var pDivTerm        = document.getElementById('affordcalcslide_term');       

   document.getElementById('affordcalclabel_income').innerHTML =      '$'+AddCommas(iIncome)     ;
   document.getElementById('affordcalclabel_extraincome').innerHTML = '$'+AddCommas(iExtraincome);
   document.getElementById('affordcalclabel_debt').innerHTML =        '$'+AddCommas(iDebt)       ;
   document.getElementById('affordcalclabel_closing').innerHTML =     '$'+AddCommas(iClosing)    ;
   document.getElementById('affordcalclabel_interest').innerHTML =    fInterest + '%' ;
   document.getElementById('affordcalclabel_term').innerHTML =        iTerm + ' years';

   try {
      g_bInInitialize = true;
      
      g_pIncomeSlider = new CyberC21Slider( pDivIncome.id, false, 1666, 22000, 250,
                                          iIncome, 0,
                                          '/images/sidebar/sliderbg_122.gif', '/images/sidebar/slideractivearea.gif', 122, 16, '',
                                          '/images/sidebar/grabwidget.gif', '/images/sidebar/grabwidget.gif', 15, 16,
                                          1, 1,
                                          onChangeIncomeSlider, onMovingIncomeSlider );

      g_pExtraincomeSlider = new CyberC21Slider( pDivExtraincome.id, false, 0, 10000, 100,
                                          iExtraincome, 0,
                                          '/images/sidebar/sliderbg_122.gif', '/images/sidebar/slideractivearea.gif', 122, 16, '',
                                          '/images/sidebar/grabwidget.gif', '/images/sidebar/grabwidget.gif', 15, 16,
                                          1, 1,
                                          onChangeExtraincomeSlider, onMovingExtraincomSlider );
      g_pDebtSlider = new CyberC21Slider( pDivDebt.id, false, 0, 5000, 100,
                                          iDebt, 0,
                                          '/images/sidebar/sliderbg_122.gif', '/images/sidebar/slideractivearea.gif', 122, 16, '',
                                          '/images/sidebar/grabwidget.gif', '/images/sidebar/grabwidget.gif', 15, 16,
                                          1, 1,
                                          onChangeDebtSlider, onMovingDebtSlider );
      g_pClosingSlider = new CyberC21Slider( pDivClosing.id, false, 0, 150000, 1000,
                                          iClosing, 0,
                                          '/images/sidebar/sliderbg_122.gif', '/images/sidebar/slideractivearea.gif', 122, 16, '',
                                          '/images/sidebar/grabwidget.gif', '/images/sidebar/grabwidget.gif', 15, 16,
                                          1, 1,
                                          onChangeClosingSlider, onMovingClosingSlider );
      g_pInterestSlider = new CyberC21Slider( pDivInterest.id, false, 2, 12, 0.25,
                                          fInterest, 0,
                                          '/images/sidebar/sliderbg_122.gif', '/images/sidebar/slideractivearea.gif', 122, 16, '',
                                          '/images/sidebar/grabwidget.gif', '/images/sidebar/grabwidget.gif', 15, 16,
                                          1, 1,
                                          onChangeInterestSlider, onMovingInterestSlider );
      g_pTermSlider = new CyberC21Slider( pDivTerm.id, false, 15, 30, 15,
                                          iTerm, 0,
                                          '/images/sidebar/sliderbg_122.gif', '/images/sidebar/slideractivearea.gif', 122, 16, '',
                                          '/images/sidebar/grabwidget.gif', '/images/sidebar/grabwidget.gif', 15, 16,
                                          1, 1,
                                          onChangeTermSlider, onMovingTermSlider );

      g_bInInitialize = false;
   } catch ( e ) {
      alert( e.message );
   }
}

RfgQueueCommand('InitializeAffordabilityCalculator();');
