
var currentPosition = false;

function toCurrency(str, places){
	if (!places)
		places = 2;
	return jQuery.currency(str,{s:",",d:".",c:places})
}

function openCalculator(e){
	var $ = jQuery;
	
	if (!currentPosition){
		$('#calculator').dialog('option', 'position', [e.pageX+200, e.pageY-100]);
		currentPosition = true;
	}
	
	if (e.data && e.data.duty)
	{
		$('#sd-price').val(e.data.price);
		$('input.sd-property-type').filter('[value='+e.data.propertyType+']').attr('checked','checked');
		$('input.sd-purchase-type').filter('[value='+e.data.purchaseType+']').attr('checked','checked');
		recalculate();
	}
	
	$('#calculator').dialog('open');
}

var stampDuty = {
	general: [
		[0, 0, 1.90],
		[80000, 1520, 2.85],
		[100000, 2090, 3.80],
		[250000, 7790, 4.75],
		[500000, 19665, 5.15]
	],
	residential: [
		[0, 0, 1.90],
		[120000, 2280, 2.85],
		[150000, 3135, 3.80],
		[360000, 11115, 4.75],
		[725000, 28453, 5.15]
	],
	concessional: [
		[0, 0, 1.50],
		[100000, 1500, 4.39],
		[200000, 0, -1]
	],
	firstHomeOwnerHome: [
		[0, 0, 0],
		[500000, 0, 22.51],
		[600000, 0, -1]
	],
	firstHomeOwnerLand: [
		[0, 0, 0], 	 
		[300000, 0, 13.01],
		[400000, 0, -1]
	]
};

var purchaseTypes = {
	ownerOccupied: {
		residence: 'concessional',
		'package': 'concessional',
		land: 'residential'
	},
	firstHomeOwner: {
		residence: 'firstHomeOwnerHome',
		'package': 'firstHomeOwnerLand',
		land: 'firstHomeOwnerLand'
	},
	investment: {
		residence: 'general',
		'package': 'general',
		land: 'general'
	}
}

function recalculate(){
	var priceStr = $('#sd-price').val().replace(/[\$|,]/g, '');
	var property = $('#sd-property-types input:checked').val();
	var purchase = $('#sd-purchase-types input:checked').val();
	var dutyTable = purchaseTypes[purchase][property];
	var dutyRates = stampDuty[dutyTable];
	var price;
	var duty;
	var i;
	
	try {
		price = eval(priceStr);
	} 
	catch(e){
		price = 0;
	}
	
	if (price == 0)
		duty = 0;
	else{
		if (purchase == 'firstHomeOwner' && price > dutyRates[dutyRates.length-1][0]){
			purchase = 'ownerOccupied';
			dutyTable = purchaseTypes[purchase][property];
			dutyRates = stampDuty[dutyTable];
		}
		
		if (purchase == 'ownerOccupied' && property != 'land' && price > dutyRates[dutyRates.length-1][0]){
			dutyRates = stampDuty['residential'];
		}
		
		for (i = dutyRates.length-1; i >= 0; i--){
			if (dutyRates[i][2] > -1 && price > dutyRates[i][0]){
				duty = dutyRates[i][1] + (Math.floor((price - dutyRates[i][0] - 1)/100) + 1)*dutyRates[i][2];
				break;
			}
		}
	}
	jQuery('#sd-duty').val(toCurrency(duty));
}

