// 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) || IsMortgageCooperativeChecked(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);
  var KWFee;

  if (IsCooperativeChecked(form))
  {
    KWFee = 0;
    CourtFee = 0;
    form.elements['CourtFee'].value = "nie ma";  //transl
  }
  else if (IsMortgageCooperativeChecked(form))
  {
    KWFee = 40;
    CourtFee = CalculateCourtFee(TPrice);
    form.elements['CourtFee'].value = CalcFormatMoney(CourtFee,2);

  }
  else
  {
    KWFee = 0;
    CourtFee = CalculateCourtFee(TPrice);
    form.elements['CourtFee'].value = CalcFormatMoney(CourtFee,2);
  }
  form.elements['KWFee'].value = CalcFormatMoney(KWFee,2);

  var CopiesFee = RepairFloatField('CopiesFee');

  var ExtraCosts = GovernmentLegalTax + NotarialFee + NotarialFeeVat + CourtFee +
                   Commission + CommissionVAT + KWFee;
  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';
}

function IsMortgageCooperativeChecked(form)
{
 return CheckedRadioButtonValue(form.elements['PropertyType']) == 'mort';
}

// 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.004;
  else if(TPrice<=2000000)
    fee = 4770 + (TPrice-1000000)*0.002;
  else
  {
    fee = 6770+(TPrice-2000000)*0.0025;
	
    if(fee>10000)
      fee=10000;
  }

  if(IsCooperative) {fee = fee/2;}

  return Math.round(fee*100)/100;
}

// Opłata sądowa
function CalculateCourtFee(TPrice)
{
  return 200;
}

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.forms[FormCalculatorExtra].TPrice.focus();
}
