window.addEvent('domready', function() {
calcIPTTax('');
});
var split_glob = new Array;
var percent= new Array;
var the_text= new Array;
var result_prices = new Array;
the_text[0] = "€12,500 and under"
split_glob[0] = 12500;
percent[0] = 0.0;
the_text[1] = "€1 to €40,000";
split_glob[1] = 40000;
percent[1] = 0.6;
the_text[2] = "€40,001 to €120,000";
split_glob[2] = 120000;
percent[2] = 0.8;
the_text[3] = "€120,001 to €170,000";
split_glob[3] = 170000;
percent[3] = 0.9;
the_text[4] = "€170,001 to €300,000";
split_glob[4] = 300000;
percent[4] = 1.1;
the_text[5] = "€300,001 to €500,000";
split_glob[5] = 500000;
percent[5] = 1.5;
the_text[6] = "€500,001 to €800,000";
split_glob[6] = 800000;
percent[6] = 1.5;
the_text[7] = "€800,001 to €3,000,000";
split_glob[7] = 3000000;
percent[7] = 1.7;
the_text[8] = "over €3,000,000";
percent[8] = 1.9;
split_glob[8] = 3000001;
var second_stamp_percent = 0.2;
function calcIPTTax(A)
{
if($('ipt_price').get('value').replace(",", ""))
{
var type = $$('input[name=as_ipt]:checked').map(function(e) { return e.value; });
var result_single;
var is_joint = "";
if(type=="Joint")
{
var result_single_cal = calcTransferIPT($('ipt_price').get('value').replace(",", ""),1);
result_single = calcTransferIPT($('ipt_price').get('value').replace(",", ""),2);
//var total_joint = result_joint[1]+result_joint[2]+result_joint[3];
is_joint = "
per person | ";
}
else
result_single =calcTransferIPT($('ipt_price').get('value').replace(",", ""),1);
var total_single = 0;
var res
res = "";
res = res+"Tax Bracket | Taxable Value | % | Total |
";
var contract_price = $('ipt_price').get('value').replace(",", "");
var used_price = 0;
//show exampt
if(result_single[0]=="exempt")
{
res = res+""+the_text[0]+" | €"+addCommas(result_prices[0])+" | at "+percent[0]+"% | "+addCommas(result_single[0])+" | "+is_joint+"
";
}
//foreach result single
for (var i=1;i"+the_text[i]+" | €"+addCommas(result_prices[i])+" | at "+percent[i]+"% | €"+addCommas(result_single[i])+" | "+is_joint+"";
total_single = result_single[i]+total_single;
}
val = parseFloat(total_single);
val = Math.round(val*100)/100;
val = val.toFixed(2);
res = res+"
|
Total Immovable Property Tax | | | €"+addCommas(val)+" | "+is_joint+"
";
if(is_joint)
{
var total_single_calc = 0;
for (var i=1;iSaving as Joint | | | €"+addCommas(total_single_calc)+" | ";
}
}
res = res+"
";
$('ipt_tax_display').set('html', res);
}
function calcTransferIPT(price,multiply)
{
var results=new Array();
var first_split = split_glob[1];
var second_split = split_glob[2];
pricev=parseFloat(price);
pricev = pricev / multiply;
//work out 1st
if(pricev<=split_glob[0] )
{
result_prices[0] = pricev;
results[0] = "exempt";
}
else if(pricev<=split_glob[1] )
{
result_prices[1] = pricev;
results[1] = Math.round((eval(pricev/100)*percent[1])*100)/100; //first
results[1] = parseFloat(results[1].toFixed(2));
}
else if(pricev<=split_glob[2])
{
result_prices[1] = first_split;
results[1] = Math.round((eval(first_split/100)*percent[1])*100)/100; //first
results[1] = parseFloat(results[1].toFixed(2));
pricev = pricev - split_glob[1];
result_prices[2] = pricev;
results[2] = Math.round((eval(pricev/100)*percent[2])*100)/100; //second
results[2] = parseFloat(results[2].toFixed(2));
}
else if(pricev<=split_glob[3])
{
result_prices[1] = first_split;
results[1] = Math.round((eval(result_prices[1]/100)*percent[1])*100)/100; //first
results[1] = parseFloat(results[1].toFixed(2));
result_prices[2] = split_glob[2] - split_glob[1];
results[2] = Math.round((eval(result_prices[2] /100)*percent[2])*100)/100; //second
results[2] = parseFloat(results[2].toFixed(2));
result_prices[3] = pricev - result_prices[2] - result_prices[1];
results[3] = Math.round((eval(result_prices[3]/100)*percent[3])*100)/100; //second
results[3] = parseFloat(results[3].toFixed(2));
}
else if(pricev<=split_glob[4])
{
result_prices[1] = first_split;
results[1] = Math.round((eval(result_prices[1] /100)*percent[1])*100)/100; //first
results[1] = parseFloat(results[1].toFixed(2));
result_prices[2] = split_glob[2] - result_prices[1];
results[2] = Math.round((eval(result_prices[2]/100)*percent[2])*100)/100; //second
results[2] = parseFloat(results[2].toFixed(2));
result_prices[3] = split_glob[3] - result_prices[2] - result_prices[1];
results[3] = Math.round((eval(result_prices[3]/100)*percent[3])*100)/100; //second
results[3] = parseFloat(results[3].toFixed(2));
result_prices[4] = pricev - result_prices[3] - result_prices[2] - result_prices[1];
results[4] = Math.round((eval(result_prices[4] /100)*percent[4])*100)/100; //second
results[4] = parseFloat(results[4].toFixed(2));
}
else if(pricev<=split_glob[5])
{
result_prices[1] = first_split;
results[1] = Math.round((eval(result_prices[1] /100)*percent[1])*100)/100; //first
results[1] = parseFloat(results[1].toFixed(2));
result_prices[2] = split_glob[2] - result_prices[1];
results[2] = Math.round((eval(result_prices[2]/100)*percent[2])*100)/100; //second
results[2] = parseFloat(results[2].toFixed(2));
result_prices[3] = split_glob[3] - result_prices[2] - result_prices[1];
results[3] = Math.round((eval(result_prices[3]/100)*percent[3])*100)/100; //second
results[3] = parseFloat(results[3].toFixed(2));
result_prices[4] = split_glob[4] - result_prices[3] - result_prices[2] - result_prices[1];
results[4] = Math.round((eval(result_prices[4] /100)*percent[4])*100)/100; //second
results[4] = parseFloat(results[4].toFixed(2));
result_prices[5] = pricev - result_prices[4] - result_prices[3] - result_prices[2] - result_prices[1];
results[5] = Math.round((eval(result_prices[5] /100)*percent[5])*100)/100; //second
results[5] = parseFloat(results[5].toFixed(2));
}
else if(pricev<=split_glob[6])
{
result_prices[1] = first_split;
results[1] = Math.round((eval(result_prices[1] /100)*percent[1])*100)/100; //first
results[1] = parseFloat(results[1].toFixed(2));
result_prices[2] = split_glob[2] - result_prices[1];
results[2] = Math.round((eval(result_prices[2]/100)*percent[2])*100)/100; //second
results[2] = parseFloat(results[2].toFixed(2));
result_prices[3] = split_glob[3] - result_prices[2] - result_prices[1];
results[3] = Math.round((eval(result_prices[3]/100)*percent[3])*100)/100; //second
results[3] = parseFloat(results[3].toFixed(2));
result_prices[4] = split_glob[4] - result_prices[3] - result_prices[2] - result_prices[1];
results[4] = Math.round((eval(result_prices[4] /100)*percent[4])*100)/100; //second
results[4] = parseFloat(results[4].toFixed(2));
result_prices[5] = split_glob[5] - result_prices[4] - result_prices[3] - result_prices[2] - result_prices[1];
results[5] = Math.round((eval(result_prices[5] /100)*percent[5])*100)/100; //second
results[5] = parseFloat(results[5].toFixed(2));
result_prices[6] = pricev - result_prices[5] - result_prices[4] - result_prices[3] - result_prices[2] - result_prices[1];
results[6] = Math.round((eval(result_prices[6] /100)*percent[6])*100)/100; //second
results[6] = parseFloat(results[6].toFixed(2));
}
else if(pricev<=split_glob[7])
{
result_prices[1] = first_split;
results[1] = Math.round((eval(result_prices[1] /100)*percent[1])*100)/100; //first
results[1] = parseFloat(results[1].toFixed(2));
result_prices[2] = split_glob[2] - result_prices[1];
results[2] = Math.round((eval(result_prices[2]/100)*percent[2])*100)/100; //second
results[2] = parseFloat(results[2].toFixed(2));
result_prices[3] = split_glob[3] - result_prices[2] - result_prices[1];
results[3] = Math.round((eval(result_prices[3]/100)*percent[3])*100)/100; //second
results[3] = parseFloat(results[3].toFixed(2));
result_prices[4] = split_glob[4] - result_prices[3] - result_prices[2] - result_prices[1];
results[4] = Math.round((eval(result_prices[4] /100)*percent[4])*100)/100; //second
results[4] = parseFloat(results[4].toFixed(2));
result_prices[5] = split_glob[5] - result_prices[4] - result_prices[3] - result_prices[2] - result_prices[1];
results[5] = Math.round((eval(result_prices[5] /100)*percent[5])*100)/100; //second
results[5] = parseFloat(results[5].toFixed(2));
result_prices[6] = split_glob[6] - result_prices[5] - result_prices[4] - result_prices[3] - result_prices[2] - result_prices[1];
results[6] = Math.round((eval(result_prices[6] /100)*percent[6])*100)/100; //second
results[6] = parseFloat(results[6].toFixed(2));
result_prices[7] = pricev - result_prices[6] - result_prices[5] - result_prices[4] - result_prices[3] - result_prices[2] - result_prices[1];
results[7] = Math.round((eval(result_prices[7] /100)*percent[7])*100)/100; //second
results[7] = parseFloat(results[7].toFixed(2));
}
else if(price>split_glob[8])
{
result_prices[1] = first_split;
results[1] = Math.round((eval(result_prices[1] /100)*percent[1])*100)/100; //first
results[1] = parseFloat(results[1].toFixed(2));
result_prices[2] = split_glob[2] - result_prices[1];
results[2] = Math.round((eval(result_prices[2]/100)*percent[2])*100)/100; //second
results[2] = parseFloat(results[2].toFixed(2));
result_prices[3] = split_glob[3] - result_prices[2] - result_prices[1];
results[3] = Math.round((eval(result_prices[3]/100)*percent[3])*100)/100; //second
results[3] = parseFloat(results[3].toFixed(2));
result_prices[4] = split_glob[4] - result_prices[3] - result_prices[2] - result_prices[1];
results[4] = Math.round((eval(result_prices[4] /100)*percent[4])*100)/100; //second
results[4] = parseFloat(results[4].toFixed(2));
result_prices[5] = split_glob[5] - result_prices[4] - result_prices[3] - result_prices[2] - result_prices[1];
results[5] = Math.round((eval(result_prices[5] /100)*percent[5])*100)/100; //second
results[5] = parseFloat(results[5].toFixed(2));
result_prices[6] = split_glob[6] - result_prices[5] - result_prices[4] - result_prices[3] - result_prices[2] - result_prices[1];
results[6] = Math.round((eval(result_prices[6] /100)*percent[6])*100)/100; //second
results[6] = parseFloat(results[6].toFixed(2));
result_prices[7] = split_glob[7] - result_prices[6] - result_prices[5] - result_prices[4] - result_prices[3] - result_prices[2] - result_prices[1];
results[7] = Math.round((eval(result_prices[7] /100)*percent[7])*100)/100; //second
results[7] = parseFloat(results[7].toFixed(2));
result_prices[8] = pricev - result_prices[7] - result_prices[6] - result_prices[5] - result_prices[4] - result_prices[3] - result_prices[2] - result_prices[1];
results[8] = Math.round((eval(result_prices[8] /100)*percent[8])*100)/100; //second
results[8] = parseFloat(results[8].toFixed(2));
}
return results;
}
function addCommas(nStr)
{
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}