function stampduty_nsw( amount, purpose ) 
{
	if (amount <= 14000) 
	{
		var duty = eval((amount/100)*1.25);
	}
	else if ((amount > 14000) && (amount <= 30000)) 
	{
		var duty = eval((((amount - 14000)/100)*1.5) + 175);
	}
	else if ((amount > 30000) && (amount <= 80000)) 
	{
		var duty = eval((((amount - 30000)/100)*1.75) + 415);
	}
	else if ((amount > 80000) && (amount <= 300000)) 
	{
		var duty = eval((((amount - 80000)/100)*3.5) + 1290);
	}
	else if ((amount > 300000) && (amount <= 1000000)) 
	{
		var duty = eval((((amount - 300000)/100)*4.5) + 8990);
	}
	else {
		var duty = eval((((amount - 1000000)/100)*5.5) + 40490);
	}
	
	return duty;
}

function stampduty_vic( amount, purpose ) 
{
	if( purpose == 'invest' )
	{
		if (amount <= 25000) 
		{
			var duty = amount * ( 1.4/100 );
		}
		else if ((amount > 25000) && (amount <= 130000)) 
		{
			var duty = ( amount - 25000 ) * ( 2.4/100 ) + 350;
		}
		else if ((amount > 130000) && (amount <= 960000)) 
		{
			var duty = ( amount - 130000 ) * ( 6/100 ) + 2870;
		}
		else //if ((amount > 960000)) 
		{
			var duty = amount * ( 5.5/100 );
		}
	}
	else
	{
		if (amount <= 130000) 
		{
			var duty = 0;
		}
		else if ((amount > 130000) && (amount <= 440000)) 
		{
			var duty = ( amount - 130000 ) * ( 5/100 ) + 2870;
		}
		else if ((amount > 440000) && (amount <= 550000)) 
		{
			var duty = ( amount - 440000 ) * ( 6/100 ) + 18370;
		}
		else //if ((amount > 550000)) 
		{
			// concession doesn't apply over 550K, use investment rate instead
			var duty = stampduty_vic( amount, 'invest' );
		}
	}
	
	return duty;
}

function stampduty_qld( amount, purpose ) 
{
	/*if( purpose == 'invest' )
	{
		if (amount <= 5000) 
		{
			var duty = 0;
		}
		else if ((amount > 5000) && (amount <= 75000)) 
		{
			var duty = ( amount - 5000 ) * ( 1.5/100 );
		}
		else if ((amount > 75000) && (amount <= 540000)) 
		{
			var duty = ( amount - 75000 ) * ( 3.5/100 ) + 1050;
		}
		else if ((amount > 540000) && (amount <= 980000)) 
		{
			var duty = ( amount - 540000 ) * ( 4.5/100 ) + 17325;
		}
		else //if ((amount > 980000)) 
		{
			var duty = ( amount - 980000 ) * ( 5.25/100 ) + 37125;
		}
	}
	else
	{
		if (amount <= 350000) 
		{
			var duty = amount / 100;
		}
		else if ((amount > 350000) && (amount <= 540000)) 
		{
			var duty = ( amount - 350000 ) * ( 3.5/100 ) + 3500;
		}
		else if ((amount > 540000) && (amount <= 980000)) 
		{
			var duty = ( amount - 540000 ) * ( 4.5/100 ) + 10150;
		}
		else //if ((amount > 980000)) 
		{
			var duty = ( amount - 980000 ) * ( 5.25/100 ) + 29950;
		}
	}*/
	
	// stamp duty calculation changed to be based on an initial value, less a sliding scale discount for first home owners
	if (amount <= 5000) 
	{
		var duty = 0;
	}
	else if ((amount > 5000) && (amount <= 105000)) 
	{
		var duty = ( amount - 5000 ) * ( 1.5/100 );
	}
	else if ((amount > 105000) && (amount <= 480000)) 
	{
		var duty = ( amount - 105000 ) * ( 3.5/100 ) + 1500;
	}
	else if ((amount > 480000) && (amount <= 980000)) 
	{
		var duty = ( amount - 480000 ) * ( 4.5/100 ) + 14625;
	}
	else //if ((amount > 980000)) 
	{
		var duty = ( amount - 980000 ) * ( 5.25/100 ) + 37125;
	}
	
	//if( purpose !== 'invest' )
	if( false )
	{
		var discount = 0;
		
		if( amount < 510000 )
		{
			discount = duty > 15525 ? 15525 : duty;
		}
		else if( amount < 520000 )
		{
			discount = 13925;
		}
		else if( amount < 530000 )
		{
			discount = 12325;
		}
		else if( amount < 540000 )
		{
			discount = 10725;
		}
		else if( amount < 550000 )
		{
			discount = 9125;
		}
		else if( amount < 560000 )
		{
			discount = 7550;
		}
		else if( amount < 570000 )
		{
			discount = 6000;
		}
		else if( amount < 580000 )
		{
			discount = 4500;
		}
		else if( amount < 590000 )
		{
			discount = 3000;
		}
		else if( amount < 600000 )
		{
			discount = 1500;
		}
		
		duty = duty - discount;
	}
	
	return duty;
}

function stampduty_wa( amount, purpose )
{
	if (amount <= 120000) 
	{
		var duty = amount * ( 1.9/100 );
	}
	else if ((amount > 120000) && (amount <= 150000)) 
	{
		var duty = ( amount - 120000 ) * ( 2.85/100 ) + 2280;
	}
	else if ((amount > 150000) && (amount <= 360000)) 
	{
		var duty = ( amount - 150000 ) * ( 3.8/100 ) + 3135;
	}
	else if ((amount > 360000) && (amount <= 725000)) 
	{
		var duty = ( amount - 360000 ) * ( 4.75/100 ) + 11115;
	}
	else //if ((amount > 725000)) 
	{
		var duty = ( amount - 725000 ) * ( 5.15/100 ) + 28453;
	}
	
	return duty;
}

function stampduty_act( amount, purpose )
{
	if (amount <= 100000) 
	{
		var duty = amount * ( 2/100 );
		if( duty < 20 ) duty = 20;
	}
	else if ((amount > 100000) && (amount <= 200000)) 
	{
		var duty = ( amount - 100000 ) * ( 3.5/100 ) + 2000;
	}
	else if ((amount > 200000) && (amount <= 300000)) 
	{
		var duty = ( amount - 200000 ) * ( 4/100 ) + 5500;
	}
	else if ((amount > 300000) && (amount <= 500000)) 
	{
		var duty = ( amount - 300000 ) * ( 5.5/100 ) + 9500;
	}
	else if ((amount > 500000) && (amount <= 1000000)) 
	{
		var duty = ( amount - 500000 ) * ( 5.75/100 ) + 20500;
	}
	else //if ((amount > 1000000)) 
	{
		var duty = ( amount - 1000000 ) * ( 6.75/100 ) + 49250;
	}
	
	return duty;
}

function stampduty_tas( amount, purpose )
{
	if (amount <= 1300) 
	{
		var duty = 20;
	}
	else if ((amount > 1300) && (amount <= 10000)) 
	{
		var duty = ( amount ) * ( 1.5/100 );
	}
	else if ((amount > 10000) && (amount <= 30000)) 
	{
		var duty = ( amount - 10000 ) * ( 2/100 ) + 150;
	}
	else if ((amount > 30000) && (amount <= 75000)) 
	{
		var duty = ( amount - 300000 ) * ( 2.5/100 ) + 550;
	}
	else if ((amount > 75000) && (amount <= 150000)) 
	{
		var duty = ( amount - 75000 ) * ( 3/100 ) + 1675;
	}
	else if ((amount > 150000) && (amount <= 225000)) 
	{
		var duty = ( amount - 150000 ) * ( 3.5/100 ) + 3925;
	}
	else //if ((amount > 225000)) 
	{
		var duty = ( amount - 225000 ) * ( 4/100 ) + 6550;
	}
	
	return duty;
}

function stampduty_nt( amount, purpose )
{
	if (amount <= 525000) 
	{
		var V = amount / 1000;
		var duty = (0.06571441*V*V)+(15*V);
	}
	else //if ((amount > 525000)) 
	{
		var duty = amount * ( 4.95/100 );
	}
	
	return duty;
}

function stampduty_sa( amount, purpose ) 
{
	if (amount <= 12000) 
	{
		var duty = amount * ( 1/100 );
	}
	else if ((amount > 12000) && (amount <= 30000)) 
	{
		var duty = ( amount - 12000 ) * ( 2/100 ) + 120;
	}
	else if ((amount > 30000) && (amount <= 50000)) 
	{
		var duty = ( amount - 30000 ) * ( 3/100 ) + 480;
	}
	else if ((amount > 50000) && (amount <= 100000)) 
	{
		var duty = ( amount - 50000 ) * ( 3.5/100 ) + 1080;
	}
	else if ((amount > 100000) && (amount <= 200000)) 
	{
		var duty = ( amount - 100000 ) * ( 4/100 ) + 2830;
	}
	else if ((amount > 200000) && (amount <= 250000)) 
	{
		var duty = ( amount - 200000 ) * ( 4.25/100 ) + 6830;
	}
	else if ((amount > 250000) && (amount <= 300000)) 
	{
		var duty = ( amount - 250000 ) * ( 4.75/100 ) + 8955;
	}
	else if ((amount > 300000) && (amount <= 500000)) 
	{
		var duty = ( amount - 300000 ) * ( 5/100 ) + 11330;
	}
	else //if ((amount > 980000)) 
	{
		var duty = ( amount - 500000 ) * ( 5.5/100 ) + 21330;
	}
	
	return duty;
}

function stampduty( dutyform )
{
	var amount = dutyform.amount.value;
	var purpose = dutyform.purpose.value;
	var state = dutyform.state.value.toLowerCase();
	
	amount = amount.replace(/[^0-9\.]+/g, '');
	
	var errors = [];
	
	if (amount == "") 
	{
		amount = 0;
		errors.push( 'You must enter a purchase price to calculate stamp duty on.' );
	}
	else if( !parseFloat( amount ) )
	{
		errors.push( 'Purchase price must be a number greater than zero, excluding dollar symbols and commas.' );
	}
	
	if( !state || state == '' )
	{
		errors.push( 'Stamp duty differs from state to state.  Please select a state from the list to continue.' );
	}
	
	if( errors.length > 0 )
	{
		var message = 'The following errors occurred:\n';
		message += errors.join( '\n' );
		alert( message );
		dutyform.duty.value = '';
		return false;
	}
	
	amount = parseFloat( amount );
	
	if ((amount % 100) != 0 ) 
	{
		var mod = eval(100-(amount % 100));
		amount = -(-amount - mod);
	}
	
	if( window['stampduty_'+state] )
	{
		eval( 'duty = stampduty_'+state+'('+amount+', "'+purpose+'");' );
		duty = Math.round(duty);
	}
	else
	{
		duty = 'NA'; 
	}
	
	dutyform.duty.value = duty;
	dutyform.amount.value = amount;
	
	return false;
}


