//          +++++++++++++++++++++++++++++++++++
//          (C) Copyright 2003 - 2010 Niro Solutions Pty Limited ABN 89 106 967 140
//			+++++++++++++++++++++++++++++++++++
//			Version: July 2010
//			+++++++++++++++++++++++++++++++++++
//			Original author: Miles Glisovic
//			Last update completed by: Nina Beerling
//			Modification date: 28/5/10
//			+++++++++++++++++++++++++++++++++++

var LOWINCOMETTAXOFFSET = 1500;
var LOWINCOMETTAXOFFSET_REDUCESFROM = 30000;
var LOWINCOMETTAXOFFSET_REDUCESBY = 0.04; //4 cents
var LOWINCOMETTAXOFFSET_REDUCTIONSTOPS = 67500;
var MEDICARE_MIN = 18488;
var MEDICARE_MID = 21751;
var MEDICARE_PCT_02 = 0.1;
var MEDICARE_PCT_0015 = 0.015;
var TAX_THRESHOLD_1 = 6000;
var TAX_THRESHOLD_2 = 37000;
var TAX_THRESHOLD_3 = 80000;
var TAX_THRESHOLD_4 = 180000;
var TAX_BASE_1 = 4650;
var TAX_BASE_2 = 17550;
var TAX_BASE_3 = 54550;
var TAX_RATE_1 = 0.15;
var TAX_RATE_2 = 0.30;
var TAX_RATE_3 = 0.37;
var TAX_RATE_4 = 0.45;

function getPAYETax(taxableInc) {
    var incomeTax
    if (taxableInc <= TAX_THRESHOLD_1)
        incomeTax = 0
    else if (taxableInc <= TAX_THRESHOLD_2)
        incomeTax = TAX_RATE_1 * (taxableInc - TAX_THRESHOLD_1)
    else if (taxableInc <= TAX_THRESHOLD_3)
        incomeTax = TAX_BASE_1 + TAX_RATE_2 * (taxableInc - TAX_THRESHOLD_2)
    else if (taxableInc <= TAX_THRESHOLD_4)
        incomeTax = TAX_BASE_2 + TAX_RATE_3 * (taxableInc - TAX_THRESHOLD_3)
    else
        incomeTax = TAX_BASE_3 + TAX_RATE_4 * (taxableInc - TAX_THRESHOLD_4)
    return incomeTax
}

function getMedicareLevy(taxableInc) {
    if (taxableInc <= MEDICARE_MIN)
        return 0
    else {
        if (taxableInc < MEDICARE_MID)
            return ((taxableInc - MEDICARE_MIN) * MEDICARE_PCT_02)
        else
            return (taxableInc * MEDICARE_PCT_0015)
    }
}

function getLowIncomeTaxOffset_2006_07(taxableIncome) {
    var ret = 0
    if (taxableIncome < LOWINCOMETTAXOFFSET_REDUCESFROM)
        ret = LOWINCOMETTAXOFFSET
    else {
        ret = LOWINCOMETTAXOFFSET - (taxableIncome - LOWINCOMETTAXOFFSET_REDUCESFROM) * LOWINCOMETTAXOFFSET_REDUCESBY
    }
    ret = Math.max(0, ret)
    return ret
}
