// Seller Form Calculator Functions

// Escrow Fees
var escrowFees = new Array(
new Array(0.00,29999.99,127.50),
new Array(30000.00,39999.99,135.00),
new Array(40000.00,49999.99,142.50),
new Array(50000.00,59999.99,150.00),
new Array(60000.00,69999.99,157.50),
new Array(70000.00,79999.99,165.00),
new Array(80000.00,89999.99,172.50),
new Array(90000.00,99999.99,180.00),
new Array(100000.00,109999.99,187.50),
new Array(110000.00,119999.99,195.00),
new Array(120000.00,129999.99,202.50),
new Array(130000.00,139999.99,210.00),
new Array(140000.00,149999.99,217.50),
new Array(150000.00,159999.99,225.00),
new Array(160000.00,169999.99,232.50),
new Array(170000.00,179999.99,240.00),
new Array(180000.00,189999.99,247.50),
new Array(190000.00,199999.99,255.00),
new Array(200000.00,209999.99,262.50),
new Array(210000.00,219999.99,270.00),
new Array(220000.00,229999.99,277.50),
new Array(230000.00,239999.99,285.00),
new Array(240000.00,249999.99,292.50),
new Array(250000.00,259999.99,300.00),
new Array(260000.00,269999.99,307.50),
new Array(270000.00,279999.99,315.00),
new Array(280000.00,289999.99,322.50),
new Array(290000.00,299999.99,330.00),
new Array(300000.00,309999.99,337.50),
new Array(310000.00,319999.99,345.00),
new Array(320000.00,329999.99,352.50),
new Array(330000.00,339999.99,360.00),
new Array(340000.00,349999.99,367.50),
new Array(350000.00,359999.99,372.50),
new Array(360000.00,369999.99,377.50),
new Array(370000.00,379999.99,382.50),
new Array(380000.00,389999.99,387.50),
new Array(390000.00,399999.99,392.50),
new Array(400000.00,409999.99,397.50),
new Array(410000.00,419999.99,402.50),
new Array(420000.00,429999.99,407.50),
new Array(430000.00,439999.99,412.50),
new Array(440000.00,449999.99,417.50),
new Array(450000.00,459999.99,422.50),
new Array(460000.00,469999.99,427.50),
new Array(470000.00,479999.99,432.50),
new Array(480000.00,489999.99,437.50),
new Array(490000.00,499999.99,442.50),
new Array(500000.00,509999.99,447.50),
new Array(510000.00,519999.99,452.50),
new Array(520000.00,529999.99,457.50),
new Array(530000.00,539999.99,462.50),
new Array(540000.00,549999.99,467.50),
new Array(550000.00,559999.99,472.50),
new Array(560000.00,569999.99,477.50),
new Array(570000.00,579999.99,482.50),
new Array(580000.00,589999.99,487.50),
new Array(590000.00,599999.99,492.50),
new Array(600000.00,609999.99,497.50),
new Array(610000.00,619999.99,502.50),
new Array(620000.00,629999.99,507.50),
new Array(630000.00,639999.99,512.50),
new Array(640000.00,649999.99,517.50),
new Array(650000.00,659999.99,522.50),
new Array(660000.00,669999.99,527.50),
new Array(670000.00,679999.99,532.50),
new Array(680000.00,689999.99,537.50),
new Array(690000.00,699999.99,542.50),
new Array(700000.00,709999.99,547.50),
new Array(710000.00,719999.99,552.50),
new Array(720000.00,729999.99,557.50),
new Array(730000.00,739999.99,562.50),
new Array(740000.00,749999.99,567.50),
new Array(750000.00,759999.99,572.50),
new Array(760000.00,769999.99,577.50),
new Array(770000.00,779999.99,582.50),
new Array(780000.00,789999.99,587.50),
new Array(790000.00,799999.99,592.50),
new Array(800000.00,809999.99,597.50),
new Array(810000.00,819999.99,602.50),
new Array(820000.00,829999.99,607.50),
new Array(830000.00,839999.99,612.50),
new Array(840000.00,849999.99,617.50),
new Array(850000.00,859999.99,622.50),
new Array(860000.00,869999.99,627.50),
new Array(870000.00,879999.99,632.50),
new Array(880000.00,889999.99,637.50),
new Array(890000.00,899999.99,642.50),
new Array(900000.00,909999.99,647.50),
new Array(910000.00,919999.99,652.50),
new Array(920000.00,929999.99,657.50),
new Array(930000.00,939999.99,662.50),
new Array(940000.00,949999.99,667.50),
new Array(950000.00,959999.99,672.50),
new Array(960000.00,969999.99,677.50),
new Array(970000.00,979999.99,682.50),
new Array(980000.00,989999.99,687.50),
new Array(990000.00,999999.99,692.50),
new Array(1000000.00,1009999.99,697.50)
);                       
                         
var titleInsurance = new Array(
new Array(0.00,0.00),
new Array(20000.00,230), 
new Array(30000.00,270), 
new Array(40000.00,315), 
new Array(50000.00,355), 
new Array(60000.00,395), 
new Array(70000.00,425), 
new Array(80000.00,455), 
new Array(90000.00,485), 
new Array(100000.00,515),
new Array(110000.00,535),
new Array(120000.00,555),
new Array(130000.00,575),
new Array(140000.00,595),
new Array(150000.00,615),
new Array(160000.00,635),
new Array(170000.00,655),
new Array(180000.00,675),
new Array(190000.00,695),
new Array(200000.00,715),
new Array(210000.00,735),
new Array(220000.00,755),
new Array(230000.00,775),
new Array(240000.00,795),
new Array(250000.00,815),
new Array(260000.00,835),
new Array(270000.00,855),
new Array(280000.00,875),
new Array(290000.00,895),
new Array(300000.00,915),
new Array(310000.00,935),
new Array(320000.00,955),
new Array(330000.00,975),
new Array(340000.00,995),
new Array(350000.00,1015),
new Array(360000.00,1035),
new Array(370000.00,1055),
new Array(380000.00,1075),
new Array(390000.00,1095),
new Array(400000.00,1115),
new Array(410000.00,1135),
new Array(420000.00,1155),
new Array(430000.00,1175),
new Array(440000.00,1195),
new Array(450000.00,1215),
new Array(460000.00,1235),
new Array(470000.00,1255),
new Array(480000.00,1275),
new Array(490000.00,1295),
new Array(500000.00,1315),
new Array(510000.00,1335),
new Array(520000.00,1355),
new Array(530000.00,1375),
new Array(540000.00,1395),
new Array(550000.00,1415),
new Array(560000.00,1435),
new Array(570000.00,1455),
new Array(580000.00,1475),
new Array(590000.00,1495),
new Array(600000.00,1515),
new Array(610000.00,1535),
new Array(620000.00,1555),
new Array(630000.00,1575),
new Array(640000.00,1595),
new Array(650000.00,1615),
new Array(660000.00,1635),
new Array(670000.00,1655),
new Array(680000.00,1675),
new Array(690000.00,1695),
new Array(700000.00,1715),
new Array(710000.00,1735),
new Array(720000.00,1755),
new Array(730000.00,1775),
new Array(740000.00,1795),
new Array(750000.00,1815),
new Array(760000.00,1835),
new Array(770000.00,1855),
new Array(780000.00,1875),
new Array(790000.00,1895),
new Array(800000.00,1915),
new Array(810000.00,1935),
new Array(820000.00,1955),
new Array(830000.00,1975),
new Array(840000.00,1995),
new Array(850000.00,2015),
new Array(860000.00,2035),
new Array(870000.00,2055),
new Array(880000.00,2075),
new Array(890000.00,2095),
new Array(900000.00,2115),
new Array(910000.00,2135),
new Array(920000.00,2155),
new Array(930000.00,2175),
new Array(940000.00,2195),
new Array(950000.00,2215),
new Array(960000.00,2235),
new Array(970000.00,2255),
new Array(980000.00,2275),
new Array(990000.00,2295),
new Array(1000000.00,2315)
);                       
                         
function RestrictChars(e) {
  var period = 190;      
  var keypadperiod = 110;
  var backspace = 8;     
  var tabchar = 9;       
  var leftarrow = 37;
  var rightarrow = 39
  var homekey = 36;
  var deletekey = 46;
                         
  var keynum             
  var keychar            
  var numcheck           
                         
  if(window.event) // IE 
  {                      
    keynum = e.keyCode   
  }                      
  else if(e.which) // Netscape/Firefox/Opera
  {                      
    keynum = e.which     
  }                      
                         
  keychar = String.fromCharCode(keynum)
                         
  if((keynum >= 48 && keynum <= 57) || (keynum >= 96 && keynum <= 105)
     || keynum == period 
     || keynum == backspace
     || keynum == tabchar
     || keynum == keypadperiod
     || keynum == leftarrow
     || keynum == rightarrow
     || keynum == homekey
     || keynum == deletekey
      ) {
    return true;         
  } else {       
    return false;        
  }                      
}                        
                         
function RoundCurrency(strvalue) {
  var thevalue = Math.round(strvalue * 100)/100;
  return thevalue.toFixed(2);
}                        
                         
function CurrencyFormat(strvalue) {
  var reg = /^-?\d+(\.\d{2})?$/i
                         
  alert(strvalue);       
  return reg.test(strvalue);
}                        

function CalcCommission() {
  var price = parseFloat(document.getElementById("salePrice").value);
  var percent = parseFloat(document.getElementById("realEstCommP").value);
  percent = percent / 100;
  
  return RoundCurrency(price * percent);

}


function FillExciseTax() {
  var price = parseFloat(document.getElementById("salePrice").value);
  var percent = parseFloat(document.getElementById("exciseTax").value);
  document.getElementById('exciseTaxValue').innerHTML =  RoundCurrency(price * percent);

}

function FillTitleInsAndTax(inValue) {
  document.getElementById('titleIns').value = FillTitleInsTax(inValue); 
  document.getElementById('titleInsValue').innerHTML = document.getElementById('titleIns').value;

  document.getElementById('titleInsTax').value = RoundCurrency(0.082 * document.getElementById('titleIns').value); 
  document.getElementById('titleInsTaxValue').innerHTML = document.getElementById('titleInsTax').value;
  
}
                         
function FillTitleInsTax(inValue) {
  var outValue = 0;      
  for(i = 0; i < titleInsurance.length; i++) {
    if(inValue <= titleInsurance[i][0]) {
      outValue = titleInsurance[i][1];
      break;             
    }                    
  }                      
  return RoundCurrency(outValue);       
}                        

function FillEscrowFeeAndTax(inValue) {
  document.getElementById('escrowFee').value = FillEscrowTax(inValue); 
  document.getElementById('escrowFeeValue').innerHTML = document.getElementById('escrowFee').value;

  document.getElementById('escrowFeeTax').value = RoundCurrency(0.082 * document.getElementById('escrowFee').value); 
  document.getElementById('escrowFeeTaxValue').innerHTML = document.getElementById('escrowFeeTax').value;
  
}
                         
function FillEscrowTax(inValue) {
  var outValue = 0;      
  for(i = 0; i < escrowFees.length; i++) {
    if(inValue >= escrowFees[i][0] && inValue <= escrowFees[i][1]) {
      outValue = escrowFees[i][2];
      break;             
    }                    
  }                      
  return RoundCurrency(outValue);       
}                        

function FillSellerCharge() {
  var outValue = 0;      
  
  var curTaxes = parseFloat(document.getElementById("currentTaxes").value);
  if(isNaN(curTaxes))
    curTaxes = 0.00;
    
  var closeDate = document.getElementById("closingDate").value;
  
  if(closeDate.length == 0) {
    outValue = 0.00;
  } else {
    //sellersCharge = currentTaxes * ( (closingDate-JanOneCurrentYear) / 365 )
    outValue = curTaxes * ( daysBetween(closeDate) / 365);
  }
  return RoundCurrency(outValue);
} 

var SECOND = 1000; // the number of milliseconds in a second
var MINUTE = SECOND * 60; // the number of milliseconds in a minute
var HOUR = MINUTE * 60; // the number of milliseconds in an hour
var DAY = HOUR * 24; // the number of milliseconds in a day
var WEEK = DAY * 7; // the number of milliseconds in a week

function daysBetween(inDate) {
  //var nDate = new Date(); // current date (local)
  
  var nJanDate = new Date(); // current date (local)
  nJanDate.setMonth(0);
  nJanDate.setDate(1);
  nJanDate.setHours(0);
  nJanDate.setMinutes(0);
  
  var nTime = Date.parse(inDate);
  //var nTime = nDate.getTime(); // current time (UTC)
  var dTime = nJanDate.getTime();  // time on jan 1

  var bTime = Math.abs(nTime - dTime)  // time difference
  return Math.round(bTime / DAY);
  
}

function EstimatedTotalCosts() {
  //totalCosts = SUM OF (realEstCommD + exciseTax + titleIns + titleInsTax + escrowFee + escrowFeeTax + attorney + sellersCharge + misc) 
  
  var excise = parseFloat(document.getElementById("exciseTax").value);
  if (isNaN(excise))
    excise = 0.00;
  
  var price = parseFloat(document.getElementById("salePrice").value);
  if (isNaN(price))
    price = 0.00;

  var realEstCD = parseFloat(document.getElementById("realEstCommD").value);
  if (isNaN(realEstCD))
    realEstCD = 0.00;

  if (realEstCD < 1.0) {
    var realEstPCT = parseFloat(document.getElementById("realEstCommP").value);
    if (isNaN(realEstPCT)) {
      realEstPCT = 0.00;
    } else {
      realEstCD = parseFloat(RoundCurrency((realEstPCT/100) * price));
    }
  }
  
  var titleInsurance = parseFloat(document.getElementById("titleIns").value);
  if (isNaN(titleInsurance))
    titleInsurance = 0.00;
  
  var titleInsurance = parseFloat(document.getElementById("titleIns").value);
  if (isNaN(titleInsurance))
    titleInsurance = 0.00;

  var titleInsuranceTax = parseFloat(document.getElementById("titleInsTax").value);
  if (isNaN(titleInsuranceTax))
    titleInsuranceTax = 0.00;

  var escrow = parseFloat(document.getElementById("escrowFee").value);
  if (isNaN(escrow))
    escrow = 0.00;

  var escrowTax = parseFloat(document.getElementById("escrowFeeTax").value);
  if (isNaN(escrowTax))
    escrowTax = 0.00;

  var atty = parseFloat(document.getElementById("attorney").value);
  if (isNaN(atty))
    atty = 0.00;

  var sellerCharge = parseFloat(document.getElementById("sellersCharge").value);
  if (isNaN(sellerCharge))
    sellerCharge = 0.00;

  var miscamt = parseFloat(document.getElementById("misc").value);
  if (isNaN(miscamt))
    miscamt = 0.00;

  var totalCosts = realEstCD +
                   (excise * price) +
                   titleInsurance +
                   titleInsuranceTax +
                   escrow +
                   escrowTax +
                   atty +
                   sellerCharge +
                   miscamt +
                   5.0;
                   
  return RoundCurrency(totalCosts);
}

function EstimatedNetProceeds() {
  var saleprice = parseFloat(document.getElementById("salePrice").value);
  if (isNaN(saleprice))
    saleprice = 0.00;

  var totcosts = parseFloat(document.getElementById("totalCosts").value);
  if (isNaN(totcosts))
    totcosts = 0.00;

  var loanpayoff = parseFloat(document.getElementById("loanPayoffsSum").value);
  if (isNaN(loanpayoff))
    loanpayoff = 0.00;
  
  var netProceeds = saleprice -
                    totcosts -
                    loanpayoff;
  
  return RoundCurrency(netProceeds);
}

function RecalcForm() {
  document.getElementById('loanPayoffsSum').value = document.getElementById('loanPayoffsD').value;
  document.getElementById('loanPayoffsSumValue').innerHTML = document.getElementById('loanPayoffsSum').value;
  FillTitleInsAndTax(document.getElementById("salePrice").value);
  FillEscrowFeeAndTax(document.getElementById("salePrice").value)
  //document.getElementById('titleInsTax').value = FillTitleInsTax(document.getElementById('titleIns').value);
  //document.getElementById('titleInsTaxValue').innerHTML = document.getElementById('titleInsTax').value;
  //document.getElementById('escrowFeeTax').value = ;
  //document.getElementById('escrowFeeTaxValue').innerHTML = document.getElementById('escrowFeeTax').value;
  //document.getElementById('titleInsTax').value = FillTitleInsTax(document.getElementById('titleIns').value)
  //document.getElementById('escrowFeeTax').value = FillEscrowTax(document.getElementById('escrowFee').value);                       
  document.getElementById('sellersCharge').value = FillSellerCharge();
  document.getElementById('sellersChargeValue').innerHTML = document.getElementById('sellersCharge').value;
  document.getElementById('totalCosts').value = EstimatedTotalCosts();
  document.getElementById('totalCostsValue').innerHTML = document.getElementById('totalCosts').value;
  document.getElementById('netProceeds').value = EstimatedNetProceeds();
  document.getElementById('netProceedsValue').innerHTML = document.getElementById('netProceeds').value;
               
  return true;                
}                        
