// Wylicza opłaty dodatkowe.
function CalculateExtra()
{
  var form = document.forms['FormCalculatorExtra'];
  form.elements['MortgageCooperative'].disabled = !IsCooperativeChecked(form);

  var PriceEntered = RepairFloatField('TPrice', true);

  if(PriceEntered == ''){
    ClearCalculatedFields(form);
    return;
  }

  var TPrice = PriceEntered * parseFloat(SelectedOptionValue('CurrencyRate'));

  var GovernmentLegalTax = TPrice * 0.02;
  form.elements['GovernmentLegalTax'].value = CalcFormatMoney(GovernmentLegalTax,2);

  var NotarialFee = CalculateNotarialFee(TPrice, IsCooperativeChecked(form));
  form.elements['NotarialFee'].value = CalcFormatMoney(NotarialFee,2);

  var NotarialFeeVat = Math.round(NotarialFee * 22)/100;
  form.elements['NotarialFeeVat'].value = CalcFormatMoney(NotarialFeeVat,2);

  var CommissionPercent = RepairFloatField('CommissionPercent');
  var Commission = Math.round(TPrice * CommissionPercent)/100;
  form.elements['Commission'].value = CalcFormatMoney(Commission,2);
  var CommissionVAT = Math.round(Commission * 22)/100;
  form.elements['CommissionVAT'].value = CalcFormatMoney(CommissionVAT,2);

  if (IsCooperativeChecked(form) && !form.MortgageCooperative.checked)
  {
    CourtFee = 0;
    form.elements['CourtFee'].value = "nie ma";  //transl
  }
  else
  {
    CourtFee = 200; //CalculateCourtFee(TPrice);
    form.elements['CourtFee'].value = CalcFormatMoney(CourtFee,2);
  }

  var CopiesFee = RepairFloatField('CopiesFee');

  var ExtraCosts = GovernmentLegalTax + NotarialFee + NotarialFeeVat + CourtFee +
                   Commission + CommissionVAT + CopiesFee;
  form.elements['ExtraCosts'].value = CalcFormatMoney(ExtraCosts,2);

  var TotalCosts = TPrice + ExtraCosts;
  form.elements['TotalCosts'].value = CalcFormatMoney(TotalCosts,2);
} // CalculateExtra

function IsCooperativeChecked(form)
{
  return CheckedRadioButtonValue(form.elements['PropertyType']) == 'cooperative';
}

// Taksa notarialna
function CalculateNotarialFee(TPrice, IsCooperative)
{
  if(TPrice<=0)
    fee = 0;
  else if(TPrice<=3000)
    fee = 100;
  else if(TPrice<=10000)
    fee = 100  + (TPrice-3000)*0.03;
  else if(TPrice<=30000)
    fee = 310  + (TPrice-10000)*0.02;
  else if(TPrice<=60000)
    fee = 710  + (TPrice-30000)*0.01;
  else if(TPrice<=1000000)
    fee = 1010 + (TPrice-60000)*0.005;
  else
    fee = 5710+(TPrice-1000000)*0.0025;

  if(IsCooperative) {fee = fee/2;}

  return Math.round(fee*100)/100;
}

// Opłata sądowa
function CalculateCourtFee(TPrice)
{
  var fee;
  if (TPrice <= 10000)        fee = TPrice * 0.08;
  else if (TPrice <= 50000)   fee = 800 + ((TPrice - 10000) * 0.07);
  else if (TPrice <=100000)   fee = 3600 + ((TPrice - 50000) * 0.06);
  else                        fee = 6600 + ((TPrice - 100000) * 0.05);

  fee = fee * 0.2;

  if (fee < 15) fee = 15;
  if (fee > 100000) fee = 100000;
  if (TPrice <= 0) fee =0;
  return fee;
}

function ClearCalculatedFields(form)
{
   form.elements['CourtFee'].value = '';
   form.elements['GovernmentLegalTax'].value = '';
   form.elements['NotarialFee'].value = '';
   form.elements['NotarialFeeVat'].value = '';
   form.elements['ExtraCosts'].value = '';
   form.elements['Commission'].value = '';
   form.elements['TotalCosts'].value = '';
}

function CalcFormatMoney(amount, decimalPlaces)
{
  return FormatMoneyForDisplay(amount, decimalPlaces);
}

// Walidacja wciśniętego klawisza w polu z liczbą float.
function CalcKeyPress(evt, elem) {
  return KeyPressFloat(evt, elem);
}

function CalcSetFocus()
{
  document.FormCalculatorExtra.TPrice.focus();
}

