﻿var stawki = new Array(
 { stawka: 100, procent: 0, baza: 0},
 { stawka: 100, procent: 0.03, baza: 3000},
 { stawka: 310, procent: 0.02, baza: 10000},
 { stawka: 710, procent: 0.01, baza: 30000},
 { stawka: 1010, procent: 0.005, baza: 60000},
 { stawka: 5710, procent: 0.0025, baza: 1000000}
);

function parseToFloat(str)
{
 str = str.replace('-','');
 str = str.replace(',','.');
 
 var adddot = false
 if( str.length > 0 ) {
 if ( str[str.length-1] == '.' ) {
 adddot = true;
 }
 var float_str = parseFloat(str);
 if( isNaN(float_str) ) {
 str = '';
 } else {
 str = '' + float_str;
 if (adddot)
 str += '.';
 }
 }
 return str;
}

function obliczenia( cena, stawka, typ ) {
 var ret_val = {
 taksa: 0,
 taksa_vat: 0,
 wypisy: 120,
 wieczysta: 200,
 sadowa: 200,
 cyw_praw: 0,
 prowizja: 0,
 prowizja_vat: 0,
 razem: 0
 };
 
 var mnoznik = 1; 
 switch( typ ) {
 case 'spoldzielcze':
 ret_val['wieczysta'] = ret_val['sadowa'] = 0;
 mnoznik = 0.5;
 break;
 case 'spol_ksiega':
 mnoznik = 0.5
 break;
 default:
 }
 
 if (cena != '') { 
 ret_val['cyw_praw'] = Math.round(2*cena)/100;
 ret_val['prowizja'] = Math.max(Math.round( stawka *cena)/100, 800);
 ret_val['prowizja_vat'] = Math.round(22*ret_val['prowizja'])/100;
 
 
 for(i = stawki.length-1; i >= 0; --i) {
 var baza = stawki[i]['baza'];
 if( cena >= baza ) {
 ret_val['taksa'] = Math.round( (stawki[i]['stawka'] + stawki[i]['procent']*(cena - baza) )*mnoznik*100)/100;
 ret_val['taksa_vat'] = Math.round(ret_val['taksa'] * 22)/100;
 break;
 }
 }
 }
 
 var razem = ret_val['taksa'] +
 ret_val['taksa_vat'] +
 ret_val['sadowa'] +
 ret_val['prowizja'] +
 ret_val['prowizja_vat'] +
 ret_val['cyw_praw'] +
 ret_val['wieczysta'] +
 ret_val['wypisy'];
 
 ret_val['razem'] = Math.round(100*razem)/100;
 
 return ret_val;
}

function getCurrencyStr( val ) {
 if ( isNaN(val) ) {
 return '0.00';
 }
 val = Math.round(val*100)/100;
 var str = String(val);
 
 var index = -1;
 if( str.lastIndexOf('.') != -1 ) {
 index = str.length - str.lastIndexOf('.');
 }
 
 switch ( index ) {
 case -1:
 return str + '.00';
 case 2:
 return str + '0';
 default:
 return str;
 }
}

function update1() {
 
 var cena_el = document.kalkulator.cena;
 var stawka_el = document.kalkulator.stawka;
 var typ_els = document.kalkulator.typ;
 
 var typ = '';

 
 if (cena_el == null || typ_els == null || stawka_el == null ) 
 return;
 
 for( i in typ_els ) {
 if ( typ_els[i].checked != null && typ_els[i].checked == true ) {
 typ = typ_els[i].value;
 break;
 }
 }

 var cena = parseToFloat(cena_el.value);
 cena_el.value = cena;
 var stawka = parseToFloat( stawka_el.value);
 
 if ( stawka > 100.0 ) stawka = 100.0;
 if ( stawka < 0.0 ) stawka = 0.0;
 stawka_el.value = stawka;
 
 var ret = obliczenia( cena, stawka, typ );
 for( i in ret ) {
 var el = document.getElementById(i);
 if (el != null ) {
 el.innerHTML = getCurrencyStr(ret[i]);
 }
 }
}
