/**
 * @author Joel
 */

 	//set the downpayment field
 	function downpayment(){
 	  //set the amount of a downpayment
	  var askingPrice = Math.round( getAskingPrice() );
	  var dpp = getDownPayment();
	 
	  var dp = askingPrice * dpp;
	  $('input#dpp').val(dp);//use a hidden form field to store unformatted value so we can use it later
	    dp = dp.numberFormat('$?,?');
	    $('td#downPayment').html( dp );
	    $('td#downPayment').removeClass('error').addClass('total');  
 	}//eof
 	
 	
	//validate the asking price field and get its value
	function getAskingPrice() {
	   var ap = replaceCommas($('input#askingPrice').val());
	  if (! isNaN(ap)) {
	  	$('td#askingPriceError').removeClass('error');
	   	$('td#askingPriceError').html('');
	  	return ap;
	  } else {
	     $('td#askingPriceError').html("Enter a Valid Number")
		 $('td#askingPriceError').addClass('error');
	  }
	}//eof
	
	//validate the downpayment field and get its value
	function getDownPayment(){
	  var dpp = $('input#downpayment').val()/100;
	  if (! isNaN(dpp)) {
	  	 return dpp;
	  } else {
	     $('td#downPayment').html("Enter a Valid Percentage for Down Payment. No periods or % signs are needed")
	     $('td#downPayment').removeClass('total').addClass('error');
	  }
	}//eof
	
	//validates the interest rate field and gets its value
	function getInterestRate(){
	  var ir = $('input#interestRate').val()/100;
	   if (! isNaN(ir)) {
	   	 $('td#interestRateError').removeClass('error');
	   	 $('td#interestRateError').html('');
	  	 return ir;
	  } else {
	     $('td#interestRateError').html("Enter a Valid Percentage for Interest Rate. No periods or % signs are needed")
	     $('td#interestRateError').addClass('error');
	  }
	}//eof
	
	function setFFE(){
	  var ffe = replaceCommas($('input#FFE').val());
	  if (! isNaN(ffe)) {
	      $('td#FFEError').removeClass('error');
	   	  $('td#FFEError').html('');
	      return ffe;
	    } else {
	     $('td#FFEError').html("Enter a Valid Number");
	     $('td#FFEError').addClass('error');
	    }
	}
	function getFFE() {
	  return replaceCommas($('input#FFE').val());
	}
	
	function setSellerDiscEarning(){
	  var sde = replaceCommas($('input#sellerDiscEarning').val());
	  if (! isNaN(sde)) {
	      $('td#sellerDiscEarningError').removeClass('error');
	   	  $('td#sellerDiscEarningError').html('');
	      return sde;
	    } else {
	     $('td#sellerDiscEarningError').html("Enter a Valid Number");
	     $('td#sellerDiscEarningError').addClass('error');
	    }
	}
	
	function getSellerDiscEarning() {
	  return replaceCommas( $('input#sellerDiscEarning').val() );
	  
	}
	
	function  setCaptlExpen() {
	  var deprYrs = $('input#captlExpen').val();
	  var assets = getFFE();
	  var ce = Math.round(assets / deprYrs);
	  if (! isNaN(ce)) {
	      $('td#td_captlExpen').removeClass('error');
	   	  $('td#td_captlExpen').html(ce.numberFormat('$?,?') );
	   	  $('td#td_captlExpen').addClass('total');
	   	  $('input#captlExpendTotal').val(ce);
	      return ce;
	    } else {
	     $('td#td_captlExpen').html("Enter a Valid Whole  Number");
	     $('td#td_captlExpen').addClass('error');
	    }
	}
	
	function  getCaptlExpen() {
	  return replaceCommas($('input#captlExpendTotal').val());
	}
	function  setOwnerSalary(){
	   var os = replaceCommas($('input#ownerSalary').val());
	   if (! isNaN(os )) {
	      $('td#ownerSalaryError').removeClass('error');
	   	  $('td#ownerSalaryError').html('');
	      return os;
	    } else {
	     $('td#ownerSalaryError').html("Enter a Valid Number");
	     $('td#ownerSalaryError').addClass('error');
	    }
	
	}
	
	function getOwnerSalary(){
		  return replaceCommas($('input#ownerSalary').val());
	     
	}
	
	//validates the years field and returns its value
	function getYears(){
	  var yrs = $('input#years').val();
	  
	    if (! isNaN(yrs)) {
	      $('td#yearsError').removeClass('error');
	   	  $('td#yearsError').html('');
	      return yrs;
	    } else {
	     $('td#yearsError').html("Enter a Valid Percentage for Interest Rate. No periods or % signs are needed");
	     $('td#yearsError').addClass('error');
	    }
	}
	
	function getDebtServicePct() {
	  var dsp = $('input#debtServicePct').val()/100;
	 
	   if (! isNaN(dsp)) {
	      $('td#debtService_Pct').removeClass('error');
	   	  $('td#debtService_Pct').html('');
	      return dsp;
	    } else {
	     $('td#debtService_Pct').html("Enter a valid whole number");
	     $('td#debtService_Pct').addClass('error');
	    }
	  
	}//eof
	
	function setDebtServicePct(){
	  var dsp = getDebtServicePct();
	  var pmt = $('input#debtService').val();
	  var cush = pmt * dsp;
	  
	  
	  $('input#debtCushion').val(cush);
	  $('td#debtService_Pct').html(cush.numberFormat('$?,?'));
	  $('td#debtService_Pct').addClass('total');
	}
	
	function getDebtCushion() {
	  return $('input#debtCushion').val();
	}
	//sets the td cell with the amount to finance
	function setAmtFinanced(){
	  var _ap = Math.round(getAskingPrice());
	  var _dp = Math.round($('input#dpp').val());
	  var amtFinanced = _ap-_dp;
	  
	  $('td#amtFinanced').html(amtFinanced.numberFormat('$?,?'));
	  $('td#amtFinanced').addClass('total');
	  
	  $('input#in_AmtFinanced').val(amtFinanced);
	}//eof
	function getAmtFinanced(){
	   return $('input#in_AmtFinanced').val();
	}
	function setGrossIncome() {
	  var gi = replaceCommas($('input#grossIncome').val());
	  if (! isNaN(gi)) {
	      $('td#grossIncomeError').removeClass('error');
	   	  $('td#grossIncomeError').html('');
	      return gi;
	    } else {
	     $('td#grossIncomeError').html("Enter a valid whole number");
	     $('td#grossIncomeError').addClass('error');
	    }
	}
	
	function getGrossIncome(){
	  return  Math.round( replaceCommas($('input#grossIncome').val()) );
	}
	
	
	function CalcDebtSVC(){
	  var inr = getInterestRate();
	  var yr = getYears();
	  var ap = getAskingPrice();
	  var dp = $('input#dpp').val();//downpayment percentage
	  
	  var pv  = ap-dp;
	  var ir =  inr / 12;
	  var np =  yr*12;//number payments
	  
	  var moPmt = calculate_payment(pv, ir, np);
	  var pmt = moPmt*12
	 // $('td#debug').html('pv=' + pv + '<br/> ir=' + ir +'<br/> np = '+ np)
	  $('input#debtService').val(pmt);
	  $('td#td_debtService').html(pmt.numberFormat('$?,?'));
	  $('td#td_debtService').addClass('total');
	  setApprxPayment(moPmt);
	 
	}//eof
	
	function getDebtSVC() {
	  return $('input#debtService').val();
	}
	function calculate_payment(PV, IR, NP) {
  		var PMT = (PV * IR) / (1 - Math.pow(1 + IR, -NP))
  		return round_decimals(PMT, 2)
	}
 	
 	
 	//utility functions -- clean up decimal points 
    function round_decimals(original_number, decimals) {
  		var result1 = original_number * Math.pow(10, decimals)
  		var result2 = Math.round(result1)
  		var result3 = result2 / Math.pow(10, decimals)
  		return (result3)
	}//eof
	
	//replace commas useful for making sure numbers are treated as numbers and not as strings
	function replaceCommas(n) {
		var StartNumber = n;
    	var ReplacedNumber = StartNumber.replace(/\,/g,'');
   		return ReplacedNumber;
	}//eof
	
	function setSalePrice(){
	  var a = Math.round(getAskingPrice());
	  if (a) {
	  	$('td#salePrice').html(a.numberFormat('$?,?'));
	  	$('td#salePrice').addClass('total');
	  }
	}
	
	function setEarningsLeft(){
		var see = Math.round(getSellerDiscEarning());
		var ds  = Math.round(getDebtSVC());
		var dc  = Math.round(getDebtCushion());
		var ce  = Math.round(getCaptlExpen());
		var os  = Math.round(getOwnerSalary());
	    //alert(ce)
	    var el = see-ds-dc-ce-os;
	   
	   $('td#td_earningsLeft').html(el.numberFormat('$?,?'));
	   $('td#td_earningsLeft').addClass('total');
	}
	
	
	function setInterestEarned(){
	  var ap =  getMoPayment();
	  var yrs = getYears();
	  var amtFinanced = getAmtFinanced();
	  var intEarned = ap*yrs*12-amtFinanced;
	  
	  $('input#in_interestEarned').val(intEarned);
	  $('td#interestEarned').html(intEarned.numberFormat('$?,?'));
	  $('td#interestEarned').addClass('total');
	  
	  setTotalIncome();
	}
	
	function getInterestEarned(){
	if (! isNaN($('input#in_interestEarned').val())) 
	 return $('input#in_interestEarned').val();
	else return 0;
	}
	
	function setApprxPayment(moPmt){
		$('input#moPayment').val(moPmt);
		$('td#apprxPayment').html(moPmt.numberFormat('$?,?'));
	    $('td#apprxPayment').addClass('total');
	    setInterestEarned();
	}
	
	function getMoPayment(){
	  return $('input#moPayment').val();
	}
	
	function setTotalIncome(){
	  var sp = Math.round(getAskingPrice());
	  var ie = Math.round(getInterestEarned());
	
	  var ti = Math.round(sp + ie);
	  
	  if(! isNaN(ti)) {
	  	$('td#totalIncome').html(ti.numberFormat('$?,?'));
	  	$('td#totalIncome').addClass('total');
	  	$('input#in_totalIncome').val(ti);
	  } 
	 
	}
	
	function setPR(){ //set the price revenue ratio
	  var gi = Math.round(getGrossIncome());
	  var ap = Math.round(getAskingPrice());
	  
	  var pr = round_decimals(ap/gi* 100,2) ;
	  $('td#sp_revenue').html(pr + '%');
	  $('td#sp_revenue').addClass('total');
	}
	
	function setPE(){
	  var ap = Math.round(getAskingPrice());
	  var de = Math.round(getSellerDiscEarning());
	  
	  var pe = (ap/de);
	  //alert('ap='+ ap + ' de=' + de);
	  if(! isNaN(pe)) {
	    $('td#sp_earnings').html(round_decimals(pe,2));
	    $('td#sp_earnings').addClass('total');
	  }
	}
