
function select_item(name, value) {
	this.name = name;
	this.value = value;
}

function get_selection(select_object) {
	contents = new select_item();
	for(var i=0;i<select_object.options.length;i++) {
		if(select_object.options[i].selected == true) {
			contents.name = select_object.options[i].text;
			contents.value = select_object.options[i].value;
		}
	}
	return contents;
}

function StripChars(strIn) {
	var newstr = "";
	var Chars = "0123456789.";
    for (var i = 0; i < strIn.length; i++) {
       if (Chars.indexOf(strIn.charAt(i)) == -1) {}
	   else {
	   	newstr = newstr + strIn.charAt(i);
	   }
    }
	return newstr;
}

function stampduty(formfield) {
	var amount = StripChars(formfield.amount.value);
	var loanamount = StripChars(formfield.loanamount.value);
	var state = get_selection(formfield.state);
	var type = "OO"
	for (i=0; i< formfield.elements.length; i++) {
		if (formfield.elements[i].name == 'Type') {
			for (s=0;s < 2; s++) {
				if (formfield.Type[s].checked == true) {
					type = formfield.Type[s].value;
				}
			}
		}
	}
	if ((amount == "") && (loanamount == "")) {
		window.alert("You have not entered any values!");
		return;
	}
	t_amount = amount;
	if ((amount % 100) != 0 ) {
			var mod = eval(100-(amount % 100));
			amount = -(-amount - mod);
	}
	
	if ((loanamount % 100) != 0 ) {
			var mod2 = eval(100-(loanamount % 100));
			loanamount = -(-loanamount- mod2);
	}
	
//********************** Victoria *************************
	if (state.value == "VIC") {

		if ((t_amount % 1000) != 0 ) {
			var mod = eval(1000-(t_amount % 1000));
			t_amount = -(-t_amount - mod);
		}
		var transfer = (t_amount / 1000) * 2.46 + 119.4;
		if (transfer > 1350) {
			transfer = 1350;
		}
		transfer = Math.ceil(transfer) ;
		mortgage = 98;

		var exnotes = "First home buyers now are eligible for both the First Home Bonus and the Principle Place of Residence (PPR) concession.\n\n"+
                              "Further concessions are available for Home Buyers with Concession Cards and First Home Buyers with families." +
                              "For full details of available concessions & eligibility requirements please contact the State Revenue Office.";


		if (type == 'OO') { // if owner occupied
			if (amount <= 25000) {
				var duty = eval(((amount)/100)*1.4);
			}
			else if ((amount > 25000) && (amount <= 130000)) {
				var duty = eval((((amount - 25000)/100)*2.4) + 350);
			}
			else if ((amount > 130000) && (amount <= 440000)) {
				var duty = eval((((amount - 130000)/100)*5) + 2870);
			}
			else if ((amount > 440000) && (amount <= 550000)) {
				var duty = eval((((amount - 440000)/100)*6) + 18370);
			}
			else if ((amount > 550000) && (amount <= 960000)) {
				var duty = eval((((amount - 550000)/100)*6) + 28070);
			}
			else { // more than $960,000
				var duty = eval(((amount)/100)*5.5) ;
			}
		}else { // investment property
			if (amount <= 25000) {
				var duty = eval(((amount)/100)*1.4);
			}
			else if ((amount > 25000) && (amount <= 130000)) {
				var duty = eval((((amount - 25000)/100)*2.4) + 350);
			}
			else if ((amount > 130000) && (amount <= 960000)) {
				var duty = eval((((amount - 130000)/100)*6) + 2870);
			}
			else {
				var duty = eval(((amount)/100)*5.5) ;
			}
		}
		if ((loanamount % 200) != 0 ) {
				var mod = eval(200-(loanamount % 200));
				loanamount = -(-loanamount- mod);
		}
		var loanduty = 0;
		
	}

//********************** New South Wales *************************
	else if (state.value == "NSW") {
		var mortgage = 95;
		var transfer = 190;
		var exnotes = "First home buyers purchasing a vacant block of" +
                "residential land may be exempt from paying stamp duty or eligible for a discount depending on the value of the land. A reduction in duty on the purchase of new homes by people who are not first home buyers may also be available. Please visit the Office of State Revenue website for more details about the Housing Construction Acceleration Plan initiative.";

		amount = Math.ceil(amount/100) * 100;
		
		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);
		}
		
		if ((loanamount % 1000) != 0 ) {
			var mod = eval(1000-(loanamount % 1000));
			loanamount = -(-loanamount- mod);
		}
		if (loanamount <= 16000) {
			var loanduty = 5;
		}
		else {
			var loanduty = eval((((loanamount - 16000)/1000)*4) + 5);
		}
		
		if (type == 'OO') {
		    loanduty = 0;
		}
		
	}

//********************** ACT *************************
	else if (state.value == "ACT") {
		var mortgage = 96;
		var transfer = 189;
		var loanduty = 0;
		var exnotes = "- Eligibility for the home buyer concession is determined by income, the number of dependent children and property ownership in the last 2 years.\n" +
                              "- Home buyer concession is available for vacant blocks is determined by the value of the land.";

		
				if (amount <= 100000) {
					var duty = Math.max(Math.ceil(eval(amount/100))*2, 20);
				}
				else if (amount <= 200000) {
					var duty = Math.ceil(eval((amount-100000)/100))*3.5 + 2000;
				}
				else if (amount <= 300000) {
					var duty = Math.ceil(eval((amount-200000)/100))*4 + 5500;
				}
				else if (amount <= 500000) {
					var duty = Math.ceil(eval((amount-300000)/100))*5.5 + 9500;
				}
				else if (amount <= 1000000) {
					var duty = Math.ceil(eval((amount-500000)/100))*5.75 + 20500;
				}
				else {
					var duty = Math.ceil(eval((amount-1000000)/100))*6.75 + 49250;
				}
							
				loanduty = 0.0
	
	}

//********************** Queensland *************************
	else if (state.value == "QLD") {
		if ((t_amount % 10000) != 0 ) {
			var mod = eval(10000-(t_amount % 10000));
			t_amount = -(-t_amount - mod);
		}
		var transfer = 124.2;
		if (t_amount > 180000) transfer += Math.ceil(eval((t_amount-180000)/10000))*26.30;

		var mortgage = 124.2;
		
		if (type == 'OO') { // if owner occupied
			var exnotes = "From 1 January 2007, a new first home owner transfer duty concession will be available" +
                        " for the purchase of vacant land, where a residence is to be constructed, and will be determined by the value of the land.";

			if(loanamount > 70000) loanduty = Math.ceil(eval((loanamount - 70000)/100)) * 0.20;
			else loanduty = 0;
						
			if (amount <= 320000) {
				var duty = eval((amount/100)*1);
			}
			else if ((amount > 320000) && (amount <= 500000)) {
				var duty = eval((((amount - 320000)/100)*3.5) + 3200);
			}
			else if ((amount > 500000) && (amount <= 700000)) {
				var duty = eval((((amount - 500000)/100)*4.0) + 9500);
			}
			else {
				var duty = eval((((amount - 700000)/100)*4.5) + 17500);
			}

/*			if (amount <= 320000) var duty = amount*0.01;
			else if (amount <= 500000) var duty = 3200 + Math.ceil(eval((amount - 320000)/100)) * 3.5;
			else var duty = 9500 + Math.ceil(eval((amount - 500000)/100)) * 3.75;
*/							

/*			if (amount <= 320000) var duty = Math.ceil(eval( amount /100)) * 1.0;
			else if (amount <= 500000) var duty = 3000 + Math.ceil(eval((amount - 320000)/100)) * 3.5;
			else var duty = 10000 + Math.ceil(eval((amount - 500000)/100)) * 3.75;
*/
		}
		else { // investment property
			var exnotes = "";
			
			loanduty = Math.ceil(eval(loanamount/100)) * 0.20

			if (amount <= 20000) var duty = Math.ceil(eval(amount/100)) * 1.5;
			else if (amount <= 50000) var duty = 300 + Math.ceil(eval((amount - 20000)/100)) * 2.25;
			else if (amount <= 100000) var duty = 975 + Math.ceil(eval((amount - 50000)/100)) * 2.75;
			else if (amount <= 250000) var duty = 2350 + Math.ceil(eval((amount - 100000)/100)) * 3.25;
			else if (amount <= 500000) var duty = 7225 + Math.ceil(eval((amount - 250000)/100)) * 3.5;
			else if (amount <= 700000) var duty = 15975 + Math.ceil(eval((amount - 500000)/100)) * 4.0;
			else var duty = 23975 + Math.ceil(eval((amount - 700000)/100)) * 4.5;
/*
			
			if (amount <= 20000) {
				var duty = Math.ceil(eval(amount/100))*1.5;
			}
			else if ((amount > 20000) && (amount <= 50000)) {
				var duty = Math.ceil(eval((((amount - 20000)/100)*2.25) + 300);
			}
			else if ((amount > 50000) && (amount <= 100000)) {
				var duty = eval((((amount - 50000)/100)*2.75) + 975);
			}
			else if ((amount > 100000) && (amount <= 250000)) {
				var duty = eval((((amount - 100000)/100)*3.25) +2350);
			}
			else if ((amount > 250000) && (amount <= 500000)) {
				var duty = eval((((amount - 250000)/100)*3.5) + 7225);
			}
			else {
				var duty = eval((((amount - 500000)/100)*3.75) + 15975);
			}
*/
		}
		
	}

//********************** South Australia *************************
	else if (state.value == "SAN") {
		if (amount <= 5000)
	        transfer = 117;
	    if (amount > 5000 && amount <= 20000)
	        transfer = 131;
	    if (amount > 20000 && amount <= 40000)
	        transfer = 146;
	    
	    if (amount > 40000)
	    { 
		transfer = Math.ceil((amount - 50000)/10000)*65 + 209;
	    }
		mortgage = 0;
			

		var exnotes = "There may be stamp duty concessions available. Please contact the State Revenue Office for more details.";
		
		// Round up to next $100
		amount = Math.ceil(amount/100.0)*100;
		
		if (amount <= 12000) {
			var duty = eval((amount/100.0)*1);
		}
	
		else if ((amount > 12000) && (amount <= 30000)) {
			var duty = eval((((amount - 12000)/100)*2) + 120);
		}
	
		else if ((amount > 30000) && (amount <= 50000)) {
			var duty = eval((((amount - 30000)/100)*3) + 480);
		}
	
		else if ((amount > 50000) && (amount <= 100000)) {
			var duty = eval((((amount - 50000)/100)*3.5) + 1080);
		}
	
		else if ((amount > 100000) && (amount <= 200000)) {
			var duty = eval((((amount - 100000)/100)*4) + 2830);
		}
		else if ((amount > 200000) && (amount <= 250000)) {
			var duty = eval((((amount - 200000)/100)*4.25) + 6830);
		}
		else if ((amount > 250000) && (amount <= 300000)) {
			var duty = eval((((amount - 250000)/100)*4.75) + 8955);
		}
		else if ((amount > 300000) && (amount <= 500000)) {
			var duty = eval((((amount - 300000)/100)*5) + 11330);
		}
		else {
			var duty = eval((((amount - 500000)/100)*5.5) + 21330);
		}
		
		loanamount = Math.ceil(loanamount/100)*100;
		
		if (loanamount <= 400) {
			var loanduty = 0;
		}
		else if ((loanamount > 400) && (loanamount <= 6000)) {
			
			if (type == "OO") {var loanduty = 0;}
		          else {var loanduty = 10;};
		}
		else {
			if (type == "OO") var loanduty = 0; //eval((((loanamount - 6000)/100)*0.35) + 10);
			else var loanduty = eval((((loanamount - 6000)/100)*0.30) + 10);
		}
	}

//********************** Tasmania *************************
	else if (state.value == "TAS") {
		var mortgage = 85.50;
		var transfer = 131;
		var exnotes = "There may be concessions available for purchasing vacant land, depending on the value of the land.";

		if (amount <= 1300) {
			var duty = 20;
		}
		else if ((amount > 1300) && (amount <= 10000)) {
			var duty = eval((amount/100)*1.5);
		}
		else if ((amount > 10000) && (amount <= 30000)) {
			var duty = eval((((amount - 10000)/100)*2) + 150);
		}
		else if ((amount > 30000) && (amount <= 75000)) {
			var duty = eval((((amount - 30000)/100)*2.5) + 550);
		}
		else if ((amount > 75000) && (amount <= 150000)) {
			var duty = eval((((amount - 75000)/100)*3) + 1675);
		}
		else if ((amount > 150000) && (amount <= 225000)) {
			var duty = eval((((amount - 150000)/100)*3.5) + 3925);
		}
		else {
			var duty = eval((((amount - 225000)/100)*4) + 6550);
		}

        /*
		if (loanamount <= 10000) {
			var loanduty = 20;
		}
		else if ( loanamount > 10000 ) {
			var loanduty = eval(((loanamount - 10000)*0.00175) + 20);
		}
		*/
		loanduty=0;
		
	}

//********************** Western Australia *************************
	else if (state.value == "WAN") {
		var transfer;
	//Init.getObject("notesResult").setText("WA");
		if (amount <= 85000) {
				transfer = 110;
			}
			else if (amount <= 120000) {
				transfer = 120;
			}
			else if (amount <= 200000) {
				transfer = 140;
			}
			else if (amount <= 300000) {
				transfer = 160;
			}
			else if (amount <= 400000) {
				transfer = 180;
			}
			else if (amount <= 500000) {
				transfer = 200;
	
			}
			else if (amount <= 600000) {
				transfer = 220;
			}
			else if (amount <= 700000) {
				transfer = 240;
			}
			else if (amount <= 800000) {
				transfer = 260;
			}
			else if (amount <= 900000) {
				transfer = 280;
			}
			else if (amount <= 1000000) {
				transfer = 300;
			}
			else if (amount <= 1100000) {
				transfer = 320;
			}
			else if (amount <= 1200000) {
				transfer = 340;
			}
			else if (amount <= 1300000) {
				transfer = 360;
			}
			else if (amount <= 1400000) {
				transfer = 380;
			}
			else if (amount <= 1500000) {
				transfer = 400;
			}
			else if (amount <= 1600000) {
				transfer = 420;
			}
			else if (amount <= 1700000) {
				transfer = 440;
			}
			else if (amount <= 1800000) {
				transfer = 460;
			}
			else if (amount <= 1900000) {
				transfer = 480;
			}
			else if (amount <= 2000000) {
				transfer = 500;
			}
			else {
				transfer = Math.ceil((amount - 2000000)/100000)*20 + 500;
			}
		
		var mortgage = 110;
		
		var exnotes = "There may be concessions or rebates available for first home buyers purchasing vacant land and building homes.";
		
		if (type == 'OO' && amount <= 200000) {
			if (amount <= 100000) {
				var duty = Math.ceil(eval(amount/100))*1.5;
			}
			else {
				var duty = Math.ceil(eval((amount - 100000) / 100)) *4.7 + 1500;
			}
		}
		else {
			if (amount <= 80000) {	
				var duty = Math.ceil(eval(amount/100))*2.0;
			}
		
			else if ((amount > 80000) && (amount <= 100000)) {
				var duty = Math.ceil(eval((amount - 80000)/100))*3.0 + 1600;
			}
		
			else if ((amount > 100000) && (amount <= 250000)) {
				var duty = Math.ceil(eval((amount - 100000)/100))*4.0 + 2200;
			}
		
			else if ((amount > 250000) && (amount <= 500000)) {
				var duty = Math.ceil(eval((amount - 250000)/100))*5.0 + 8200;
			}
		
			else {
				var duty = Math.ceil(eval((amount - 500000)/100))*5.4 + 20700;
			}
		}

        var loanduty = 20;

		if (type =="OO") {
		    if (loanamount > 16000) loanduty += Math.ceil(eval((loanamount-16000)/100)) * 0.125;
		}
		else {
			if (loanamount > 10000) loanduty += Math.ceil(eval((loanamount-10000)/100)) * 0.2;
		}
	}

//********************** Northern Territory  *************************
	else if (state.value == "NT") {
		var mortgage = 95;
		var transfer = 90;
		var loanduty = 0;

		var exnotes = "There may be stamp duty concessions available. Please contact the Territory Revenue Office for more details.";


		// A rebate of up to $3,640.60 off the total stamp duty payable\n- Property must be first home and intended as principal residence"
	
		if (amount <=525000) {
			newamount = eval(amount / 1000);
			var duty = eval((0.06571441 * Math.pow(newamount,2)) + (15 * newamount));
		}
	
		else {
			var duty = eval(0.0495 * amount);
		}
		if (type =="OO") {
			duty = duty - 2500;
			if (duty < 0) duty = 0;
		}
	}
	total = eval(duty + loanduty + mortgage + transfer);
	total = rounding(total);
	duty = rounding(duty);
	loanduty = rounding(loanduty);
	mortgage = rounding(mortgage);
	transfer = rounding(transfer);
	
	formfield.duty.value = duty;
	formfield.loanduty.value = loanduty;
	formfield.mortgage.value = mortgage;
	formfield.transfer.value = transfer;
	formfield.total.value = total;
	formfield.notes.value = exnotes;
}
function rounding(n) {
	pennies = n * 100;
	pennies = Math.round(pennies);
	strPennies = "" + pennies;
	len = strPennies.length;
	return strPennies.substring(0, len - 2) + "." + strPennies.substring((len - 2), len);
}
